자바스크립트에서는 함수를 생성자(constructor)로 사용할 수 있습니다. new를 붙여서 객체를 만들 수 있죠. 하지만 타입스크립트에서는 기본적으로 함수를 생성자로 사용할 수 없습니다. 대신 class를 써야 합니다. 다만 다음과 같이 억지로 만들어낼 수는 있습니다.

    type Person = {
      name: string,
      age: number,
      married: boolean,
    }
    interface PersonConstructor {
      new (name: string, age: number, married: boolean): Person;
    }
    
    const Person = function (this: Person, name: string, age: number, married: boolean) {
      this.name = name;
      this.age = age;
      this.married = married;
    } as unknown as PersonConstructor;
    Person.prototype.sayName = function(this: Person) {
      console.log(this.name);
    }
    
    const zero = new Person('zero', 28, false);
    
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.