[英]Generic constraint of the same type
我有這個課:
class Container {
parent: any;
children: any[];
}
我想刪除“任何”類型,可以使用泛型來完成。 我的問題是,“ any”類型也與“ Container”類型不同,這將需要再次指定泛型類型。
class Container<P extends Container<?>, C extends Container<?>> {
parent: P;
children: C[];
}
如何判斷約束是相同的類類型?
我不知道您的用例到底是什么樣子,但是這個簡單的類如何呢?
class Container<T> {
parent: Container<T>;
children: Container<T>[];
}
我認為在這里說P extends Container<any,any>
和C extends Container<any,any>
就足夠了:
class Container<P extends Container<any,any>,C extends Container<any,any> >{
parent: P;
children: C[];
}
class Parent extends Container<Parent,Child> {
name: string;
}
class Child extends Container<Parent, Child> {
childname: string;
}
const root = new Parent();
root.parent;
root.children[0].parent;
root.name;
root.children[0].childname;
在此,編輯器中的語法檢查可以正確計算出最后所有值的類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.