더북(TheBook)

자바스크립트에서는 함수를 생성자(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);
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.