Я пытаюсь создать вспомогательную функцию, чтобы добавить каррирование, для создания общих настроек для классов. Например:
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');
Так что теперь, когда создаются MalePerson и FemalePerson объекты, на самом деле просто возвращает новый экземпляр Person вместо этого.
var m = new MalePerson( 'john' );
Для того, чтобы система типа позволяют мне по-прежнему использовать «новый», MalePerson должен быть конструктором типа. Например: новый (название: строка) => Person. Это также должно быть тип возвращаемого значения функции.
Однако с добавлением этих заявлений, я не могу вернуть функцию из внутри 'newPersonSex. Например, это является недопустимым:
var newPersonSex = function (sex: string) : new(name:string) => Person {
return function (name: string) {
return new Person(name, sex);
}
}
Как я могу создать и вернуть новую функцию конструктора или класса на лету?













