Ich versuche, eine Hilfsfunktion zu erstellen, currying hinzuzufügen, gemeinsame Einstellungen für die Klassen zu erzeugen. Beispielsweise:
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');
So dass jetzt, wenn maleperson und female Objekte erstellt werden, ist es eigentlich nur, anstatt eine neue Instanz der Person zurück.
var m = new MalePerson( 'john' );
Damit das Typsystem erlauben Sie mir noch ‚neu‘ zu verwenden, muss ein maleperson Konstruktortyp sein. Zum Beispiel: 'new (name: String) => Person'. Das muss auch der Rückgabetyp der Funktion.
Doch mit diesen Erklärungen hinzugefügt, kann ich nicht eine Funktion von innen ‚newPersonSex‘ zurückzukehren. Zum Beispiel ist diese ungültig:
var newPersonSex = function (sex: string) : new(name:string) => Person {
return function (name: string) {
return new Person(name, sex);
}
}
Wie kann ich eine neue Konstruktor Funktion oder Klasse on the fly erstellen und zurück?













