簡體   English   中英

為什么這個 map 聲明會引發類型錯誤?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM