javascript - 如何让基本泛型类型知道 TypeScript 中的子泛型?

标签 javascript generics interface typescript

有没有一种方法可以在一个基础类型中创建两个泛型类型,同时让其中一个包含第二个作为泛型?

这是我的代码:

interface ITreeNode extends IBaseNode{
}

interface IBaseTree<T extends IBaseNode> {
    nodeType: T
}

interface IBaseForest <T extends IBaseTree<T2 extends IBaseNode>> {
    treeType: T
    nodeType: T2 
}

问题是'T2 extends IBaseNode',我真的不能设置另一种类型,理论上我不需要,因为baseTree知道他的节点的类型,我无法让森林知道这个节点是谁。

如果我无法理解,我很抱歉,感谢您的任何回复。

最佳答案

我简化了一点。

  • 删除了 IBaseNode,因为它没有声明并且与我们的问题无关。将 ITreeNode 视为您的基本节点
  • 使用通用的占位符名称来匹配意图(例如字典中的 K,V)。这里的意图是 Node : NTree : T

所以下面的代码可以满足我认为的需求:

interface ITreeNode{}

interface IBaseTree<N extends ITreeNode> {
    nodeType: N;
}

interface IBaseForest<N extends ITreeNode,T> {
    treeType: T;
    nodeType: N;
}

但是,如果你想基于 N 来限制 T,你不能这样做,因为下面显示的限制:

enter image description here

这是根据规范。

关于javascript - 如何让基本泛型类型知道 TypeScript 中的子泛型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24991005/

相关文章:

javascript - 滚动整页

javascript - 如何将菜单从悬停更改为单击

javascript - 我有来自 2 个数据库的请求数据。如何将代码合并到一个函数中?

ios - Swift 中泛型类的冗余父类(super class)约束警告

user-interface - 将国际象棋引擎连接到用 Javascript 制作的现有 GUI

java - Java 中的通用接口(interface)

javascript - 如何在 Joomla 模块后端加载 Javascript 调用?

java - 将类型 T 的对象插入通用列表

java - 为什么 hibernate 需要 java.lang.Double 的默认构造函数?

java - 抽象类中的接口(interface)