属性的实例类型是实例本身的构造函数,即打字稿

zone

我正在用Typescript做BinaryTree的东西,所以我有类似下面的内容:

class BinaryTreeNode {
    left: BinaryTreeNode;
    right: BinaryTreeNode;
    parent: BinaryTreeNode;
}

class BinarySearchNode extends BinaryTreeNode {
    left: BinarySearchNode; //I have to rewrite those property types
}

那么是否可以将实例的属性类型引用到实例的构造函数?

贾卡尔兹

根据您的实际代码,您可能正在寻找多态this类型this,即使在子类中,该类型也将存在于类的实际实例中:

class BinaryTreeNode {
  left: this;
  right: this;
  parent: this;  
}

(另外:请注意,如果使用--strict 编译器选项,则上述内容以及您的原始示例代码都将出现编译器错误。您没有初始化类属性,因此在运行时,我希望某些错误解除引用undefined。根树节点可能没有父母,叶子也没有孩子,所以也许您希望道具是可选的。但这超出了问题的范围。)

然后,您的子类不需要任何特殊处理即可表现出您想要的方式:

class BinarySearchNode extends BinaryTreeNode {
  someProp = "okay"; // stucturally identical classes are indistinguishable   
}

(此外:我在子类中添加了一个属性,以使其与父类在结构上有所区别。TypeScript的类型系统是结构性的,而不是名义上的。具有相同结构但名称不同的两个类型实际上是同一类型。这可能导致令人惊讶的结果,即使在示例代码,最好避免使用任何空的类定义。)

让我们测试一下:

const btn = new BinaryTreeNode().left;
// const btn: BinaryTreeNode

const bsn = new BinarySearchNode().left;
// const bsn: BinarySearchNode

你可以看到,类型btnbsn有自动BinaryTreeNodeBinarySearchNode分别。

希望能有所帮助;祝好运!

链接到代码

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使函子的函数类型构造函数实例?复制实例

来自分类Dev

如何使函子的函数类型构造函数实例?重复的实例

来自分类Dev

使用打字稿获取字段类型而不创建实例

来自分类Dev

未实例化类数组的打字稿数据类型

来自分类Dev

打字稿:访问类的静态成员,而无需从构造函数签名数组中实例化它

来自分类Dev

如何从子类的实例访问打字稿中的静态属性?

来自分类Dev

实例化打字稿类

来自分类Dev

原型属性的构造函数实例的奇怪行为

来自分类Dev

从类创建派生类型,但省略构造函数(打字稿)

来自分类Dev

打字稿覆盖构造函数中的扩展属性

来自分类Dev

ES6 +实例属性在构造函数外部实例化

来自分类Dev

多个打字稿构造函数

来自分类Dev

打字稿复杂构造函数

来自分类Dev

销毁构造函数实例

来自分类Dev

打字稿:属性类型通配符

来自分类Dev

函数类型注释打字稿

来自分类Dev

打字稿定义构造函数或函数?

来自分类Dev

打字稿定义构造函数或函数?

来自分类Dev

打字稿打字:具有属性的函数

来自分类Dev

如何通过类类型委托构造函数的实例化?

来自分类Dev

从TypeScript中的泛型类型获取构造函数/实例

来自分类Dev

在构造函数中获取类型为Y的X个实例

来自分类Dev

Scala - 模式匹配 - 构造函数无法实例化为预期类型

来自分类Dev

可以用约束'{}'的其他子类型实例化打字稿错误

来自分类Dev

有什么方法可以在打字稿中实例化通用文字类型?

来自分类Dev

使用Emotion样式+ material-ui +打字稿,类型实例化过深,甚至可能无限

来自分类Dev

如何从打字稿中的类中创建排除实例方法的类型?

来自分类Dev

为什么在原型而不是构造函数中声明实例属性?

来自分类Dev

注释由构造函数参数设置的实例属性?

Related 相关文章

  1. 1

    如何使函子的函数类型构造函数实例?复制实例

  2. 2

    如何使函子的函数类型构造函数实例?重复的实例

  3. 3

    使用打字稿获取字段类型而不创建实例

  4. 4

    未实例化类数组的打字稿数据类型

  5. 5

    打字稿:访问类的静态成员,而无需从构造函数签名数组中实例化它

  6. 6

    如何从子类的实例访问打字稿中的静态属性?

  7. 7

    实例化打字稿类

  8. 8

    原型属性的构造函数实例的奇怪行为

  9. 9

    从类创建派生类型,但省略构造函数(打字稿)

  10. 10

    打字稿覆盖构造函数中的扩展属性

  11. 11

    ES6 +实例属性在构造函数外部实例化

  12. 12

    多个打字稿构造函数

  13. 13

    打字稿复杂构造函数

  14. 14

    销毁构造函数实例

  15. 15

    打字稿:属性类型通配符

  16. 16

    函数类型注释打字稿

  17. 17

    打字稿定义构造函数或函数?

  18. 18

    打字稿定义构造函数或函数?

  19. 19

    打字稿打字:具有属性的函数

  20. 20

    如何通过类类型委托构造函数的实例化?

  21. 21

    从TypeScript中的泛型类型获取构造函数/实例

  22. 22

    在构造函数中获取类型为Y的X个实例

  23. 23

    Scala - 模式匹配 - 构造函数无法实例化为预期类型

  24. 24

    可以用约束'{}'的其他子类型实例化打字稿错误

  25. 25

    有什么方法可以在打字稿中实例化通用文字类型?

  26. 26

    使用Emotion样式+ material-ui +打字稿,类型实例化过深,甚至可能无限

  27. 27

    如何从打字稿中的类中创建排除实例方法的类型?

  28. 28

    为什么在原型而不是构造函数中声明实例属性?

  29. 29

    注释由构造函数参数设置的实例属性?

热门标签

归档