To jest coś, co robiłem w starszych wersjach TypeScript i używam tej metody w C#, ale nie działa ona w najnowszej 1.0 wersji TypeScript.Obchodzenie się z brakiem wsparcia dla ograniczenia typu to self
Oto, co sprawdziło się w przeszłości:
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
Wszystko wykorzystywane do pracy w harmonii.
Teraz w maszynopisie 1.0 otrzymuję ten błąd w sprawie definicji Base<T extends Base<T>>
:
Ograniczenie parametru typu nie mogą odwoływać się do dowolnego parametru typ z tej samej listy parametrów typu.
Jak mogę naprawić tę przykładową klasę, aby działała, nie wymagając żadnych rzutów poza klasami lub rzucając cokolwiek na "dowolny"? Może ten wzór powinien zostać zmieniony?
pamiętać, że ten wzór nie będzie już konieczna, gdy maszynopis podtrzymuje [to] polimorficzny (https: // github. com/Microsoft/TypeScript/pull/4910) w TS1.7. –