ヘルパー関数を作成し、カリー化を追加し、クラスの一般的な設定を生成しようとしています。例えば:
class Person {
private name: string;
private sex: string;
constructor (name: string, sex: string) {
this.name = name;
this.sex = sex;
}
}
var newPersonSex = function (sex: string) {
return function (name: string) {
return new Person(name, sex);
}
}
var MalePerson = newPersonSex('male');
var FemalePerson = newPersonSex('female');
そのため、MalePersonオブジェクトとFemalePersonオブジェクトが作成されると、実際には代わりにPersonの新しいインスタンスが返されます。
var m = new MalePerson( 'john' );
型システムで「new」を引き続き使用できるようにするには、MalePersonがコンストラクター型である必要があります。例:'new(name:string)=>Person'。これも関数の戻り型である必要があります。
ただし、これらの宣言が追加されているため、「newPersonSex」内から関数を返すことはできません。たとえば、これは無効です。
var newPersonSex = function (sex: string) : new(name:string) => Person {
return function (name: string) {
return new Person(name, sex);
}
}
新しいコンストラクター関数またはクラスをその場で作成して返すにはどうすればよいですか?