Próbuję utworzyć funkcję pomocnika, aby dodać currying, aby wygenerować wspólnych ustawień dla klas. Na przykład:
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, że teraz, kiedy MalePerson i FemalePerson obiekty są tworzone, to faktycznie tylko zwraca nową instancję Osoba zamiast.
var m = new MalePerson( 'john' );
W celu dla systemu typu pozwala mi nadal używać „new”, MalePerson musi być typu konstruktor. Na przykład: 'nowy (nazwa: String) => Person'. Który również musi być zwracany typ funkcji.
Jednak przy tych zgłoszeń dodane, nie może powrócić do funkcji „newPersonSex od wewnątrz”. Na przykład jest nieprawidłowy:
var newPersonSex = function (sex: string) : new(name:string) => Person {
return function (name: string) {
return new Person(name, sex);
}
}
Jak mogę utworzyć i powrócić nową funkcję konstruktora lub klasy w locie?













