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

问题描述 投票:2回答:1

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

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

type Foo = Array<Foo | string>

问题在这里描述:Type alias circularly references itself但它并没有帮助我找到解决我的问题的方法

typescript types
1个回答
2
投票

TypeScript中的类型别名不能递归(由于如何解析类型别名 - 它们的解析不延迟),除非递归发生在官方文档中the examples中给出的属性级别。

正如this github issue中所解释的那样,解决方法是使用接口,因为接口可以具有您寻求的递归定义:

interface Foo extends Array<Foo | string> { }
© www.soinside.com 2019 - 2024. All rights reserved.