Próbuję utworzyć funkcję pomocnika, aby dodać curry, aby wygenerować wspólne ustawienia dla klas. Na przykład:Jak anonimowe klasy w 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');
Tak więc teraz, gdy tworzone są obiekty MalePerson i FemalePerson, w rzeczywistości po prostu zwraca nowe wystąpienie osoby.
var m = new MalePerson('john');
Aby system typów mógł nadal używać "nowego", MalePerson musi być typem konstruktora. Na przykład: "new (name: string) => Person". Musi to być również typ zwrotu funkcji.
Jednak po dodaniu tych deklaracji nie mogę zwrócić funkcji z wnętrza "newPersonSex". Na przykład jest to nieprawidłowe:
var newPersonSex = function (sex: string) : new(name:string) => Person {
return function (name: string) {
return new Person(name, sex);
}
}
Jak mogę utworzyć i od nowa nową funkcję lub klasę konstruktora w locie?