我写了一个类似下面的树:
type ReactNode = ReactChild | Array<ReactNode>
但编辑告诉我
TS2456:类型别名'ReactNode'循环引用自身。
如何解决此错误?
答案 0 :(得分:1)
类型别名中的递归存在问题,正如this issue中简要解释的那样:
类型别名不像接口。接口是命名类型, 其中类型别名只是别名。内部也是如此 处理方式不同,编译器积极地压缩类型别名 他们的声明。
此处有更长时间的讨论:allow recursive generic type aliases。
在您的情况下,您可以执行以下操作:
interface ReactNodeArray extends Array<ReactNode> {}
type ReactNode = ReactChild | ReactNodeArray;