Estoy tratando de crear una función de ayuda, para agregar currying, para generar configuraciones comunes para las clases. Por ejemplo:Cómo clases anónimas en 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');
Así que ahora, cuando se crean objetos MalePerson y FemalePerson, que en realidad sólo devuelve una nueva instancia de la persona en su lugar.
var m = new MalePerson('john');
Para que el sistema de tipos me permite seguir utilizando 'nuevo', MalePerson tiene que ser un constructor de tipos. Por ejemplo: 'new (name: string) => Person'. Eso también necesita ser el tipo de devolución de la función.
Sin embargo, con esas declaraciones agregadas, no puedo devolver una función desde adentro 'newPersonSex'. Por ejemplo, esto no es válido:
var newPersonSex = function (sex: string) : new(name:string) => Person {
return function (name: string) {
return new Person(name, sex);
}
}
¿Cómo puedo crear y devolver una nueva función o clase de constructor sobre la marcha?