Sto cercando di creare una funzione di supporto, aggiungere curring, generare impostazioni comuni per le classi. Per esempio:Come classi anonime in 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');
Così ora quando si creano MalePerson e FemalePerson oggetti, è in realtà solo restituisce una nuova istanza della persona invece.
var m = new MalePerson('john');
Affinché il sistema di tipo mi permette di utilizzare ancora 'nuovo', MalePerson ha bisogno di essere un tipo di costruzione. Ad esempio: 'new (name: string) => Person'. Anche questo deve essere il tipo di ritorno della funzione.
Tuttavia, con queste dichiarazioni aggiunte, non è possibile restituire una funzione dall'interno di "newPersonSex". Per esempio, questo non è valido:
var newPersonSex = function (sex: string) : new(name:string) => Person {
return function (name: string) {
return new Person(name, sex);
}
}
Come posso creare e restituire una nuova funzione di costruzione o di classe al volo?