我有以下代码:
type Document = number | string | Array<Document>;
TypeScript 抱怨以下错误:
test.ts(7,6): error TS2456: Type alias 'Document' circularly references itself.
显然不允许循环引用。但我还是需要这样的结构。解决这个问题的方法是什么?
TypeScript 的创建者解释了如何创建递归类型here.
循环引用的解决方法是使用extends Array
。在你的情况下,这将导致这个解决方案:
type Document = number | string | DocumentArray;
interface DocumentArray extends Array<Document> { }
更新(TypeScript 3.7)
从 TypeScript 3.7 开始,将允许使用递归类型别名,并且不再需要解决方法。看:https://github.com/microsoft/TypeScript/pull/33050
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)