Đây là điều tôi đã làm trong các phiên bản cũ của TypeScript và tôi sử dụng phương pháp này trong C#, nhưng nó không hoạt động trong phiên bản 1.0 mới nhất của TypeScript.Làm việc xung quanh mất hỗ trợ cho ràng buộc loại là tự
Đây là những gì làm việc trong quá khứ:
class Base<T extends Base<T>> {
public children : Array<T>;
doAction() {
this.children[0].promise(); // used to work
}
promise() : T {
return this; // used to work
}
}
class Child extends Base<Child> {
public myString: string;
}
new Child().promise().myString; // used to work
Tất cả mọi thứ đã từng làm việc trong sự hòa hợp.
Bây giờ trong nguyên cảo 1.0 Tôi nhận được lỗi này vào định nghĩa Base<T extends Base<T>>
:
Hạn chế của một số loại không có thể tham khảo bất kỳ tham số kiểu so với cùng danh sách tham số kiểu.
Làm cách nào để sửa lớp mẫu này hoạt động mà không yêu cầu bất kỳ phôi nào ngoài lớp học hoặc truyền bất kỳ thứ gì vào "bất kỳ" nào? Có lẽ mô hình này nên được thay đổi?
Lưu ý rằng mô hình này sẽ không còn cần thiết khi đánh máy hỗ trợ một [đa hình này] (https: // github. com/Microsoft/TypeScript/pull/4910) trong TS1.7. –