如何避免类型别名中的循环引用

时间:2019-04-12 16:47:24

标签: typescript types

我有一个数组,其元素要么是数组本身(递归),要么是字符串。 我试图为此编写类型定义,但编译器抱怨循环引用

我的问题:如何在没有循环引用错误的情况下编写这样的类型别名:

type Foo = Array<Foo | string>

问题描述如下:Type alias circularly references itself 但这并不能帮助我找到解决问题的方法

1 个答案:

答案 0 :(得分:2)

TypeScript中的类型别名不能是递归的(由于类型别名的解析方式-不推迟其解析),除非递归发生在官方文档的the examples中指定的属性级别。 / p>

this github issue中所述,解决方法是改用接口,因为接口可以具有您要查找的递归定义:

interface Foo extends Array<Foo | string> { }