자바스크립트에서는 함수를 생성자(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);