[英]Why does this map declaration throw a type error?
我嘗試聲明一個變量,其中 map 中的每個鍵都是一個對象數組。 由於某種原因,將值設為數組的行為會引發類型錯誤。
這是允許的:
var map = new Map([
['a', {c: 1}],
['b', {c: 1, d: 1}]
])
這是不允許的:
var map = new Map([
['a', [{c: 1}]],
['b', [{c: 1, d: 1}]]
])
第二段代碼會拋出這個錯誤:Type '{ a: number; b:號碼; }' 不可分配給類型 '{ a: number; }'
為什么允許第一段代碼但不允許第二段代碼? 我希望被允許在我的 map 的每個鍵上使用不同的類型
你的類型不一致。 您可以明確告訴 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, MapValue[]>([
['a', [{ c: 1 } as MapValue]],
['b', [{ c: 1, d: 1}]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.