为什么此地图声明会引发类型错误?

我尝试声明一个变量,其中映射中的每个键都是对象数组。由于某种原因,将值设为数组的行为会引发类型错误。

这是允许的:

var map = new Map([
            ['a',{c: 1}],['b',{c: 1,d: 1}]
        ])

这是不允许的:

var map = new Map([
            ['a',[{c: 1}]],[{c: 1,d: 1}]]
        ])

第二段代码将抛出此错误: 输入'{a:number; b:数字; }”不可分配给类型“ {{a:number; }'

为什么允许第一段代码但不允许第二段代码?我希望可以在地图的每个键上使用不同的类型

randy8546 回答:为什么此地图声明会引发类型错误?

您的类型不一致。您可以明确告知Map它将拥有的类型

interface MapValue {
  c: number;
  d?: number;
}

const map = new Map<string,MapValue[]>([
  ['a',[{ c: 1 }]],['b',[{ c: 1,d: 1 }]]
])

// or

interface MapValue {
  c: number;
  d: number;
}

const map = new Map<string,[{ c: 1 } as MapValue]],d: 1}]]
本文链接:https://www.f2er.com/3160066.html

大家都在问