我希望定义一个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.

如何正确声明递归类型?

最佳答案

关于interfacetypes在typescript中的不同之处,有一些非常微妙的细节;类型别名的一个警告是,它们可能不是自引用的(这是因为它们会立即展开,而接口会在稍后展开)。
你可以写

interface SafeNestedMap extends Map<string, Primitive | SafeNestedMap> { }

10-02 02:36