我希望定义一个Map
变量,该变量应该包含一个原始值(字符串{布尔)或另一个相同类型的cc>。
我试过这样做:
type Primitive = string | number | boolean;
type SafeNestedMap = Map<string, Primitive | SafeNestedMap>;
let states: SafeNestedMap = new Map<string, SafeNestedMap>();
但是编译器抱怨:
TS2456: Type alias 'SafeNestedMap' circularly references itself.
如何正确声明递归类型?
最佳答案
关于interface
和type
s在typescript中的不同之处,有一些非常微妙的细节;类型别名的一个警告是,它们可能不是自引用的(这是因为它们会立即展开,而接口会在稍后展开)。
你可以写
interface SafeNestedMap extends Map<string, Primitive | SafeNestedMap> { }