gpt4 book ai didi

typescript - 如何在 Typescript 中声明递归映射类型 (TS2456 : Type alias '*' circularly references itself.)

转载 作者:搜寻专家 更新时间:2023-10-30 20:42:04 24 4
gpt4 key购买 nike

我想定义一个 Map 变量,该变量应包含原始值(字符串 | 数字 | bool 值)或另一个相同类型的 Map

我试过这样做:

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.

我怎样才能正确地声明这个递归类型?

最佳答案

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

你可以改写

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

关于typescript - 如何在 Typescript 中声明递归映射类型 (TS2456 : Type alias '*' circularly references itself.),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49020978/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com