Tôi đang cố gắng tạo ra một hàm trợ giúp, để thêm currying, để tạo ra các thiết lập chung cho các lớp. Ví dụ:Làm thế nào để ẩn danh các lớp học trong 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');
Vì vậy, bây giờ khi đối tượng MalePerson và FemalePerson được tạo, nó thực sự chỉ trả về một cá thể mới của Người thay thế.
var m = new MalePerson('john');
Để hệ thống kiểu cho phép tôi vẫn sử dụng 'mới', MalePerson cần phải là kiểu trình tạo. Ví dụ: 'new (name: string) => Person'. Điều đó cũng cần phải là kiểu trả về của hàm.
Tuy nhiên với những tuyên bố được thêm vào, tôi không thể trả về một hàm từ bên trong 'newPersonSex'. Ví dụ: điều này không hợp lệ:
var newPersonSex = function (sex: string) : new(name:string) => Person {
return function (name: string) {
return new Person(name, sex);
}
}
Làm cách nào để tạo và trả về hàm khởi tạo mới hoặc lớp đang chạy?