簡體   English   中英

相同類型的通用約束

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM