繁体   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