私は、カリングを追加して、クラスの一般的な設定を生成するヘルパー関数を作成しようとしています。例:TypeScriptの匿名クラスへの方法
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);
}
}
新しいコンストラクタ関数またはクラスを作成して返すにはどうしたらいいですか?