如何在TypeScript中定义树类型?

时间:2017-09-14 09:58:20

标签: typescript

我写了一个类似下面的树:

type ReactNode = ReactChild | Array<ReactNode> 

但编辑告诉我

  

TS2456:类型别名'ReactNode'循环引用自身。

如何解决此错误?

1 个答案:

答案 0 :(得分:1)

类型别名中的递归存在问题,正如this issue中简要解释的那样:

  

类型别名不像接口。接口是命名类型,   其中类型别名只是别名。内部也是如此   处理方式不同,编译器积极地压缩类型别名   他们的声明。

此处有更长时间的讨论:allow recursive generic type aliases

在您的情况下,您可以执行以下操作:

interface ReactNodeArray extends Array<ReactNode> {}

type ReactNode = ReactChild | ReactNodeArray;