我在 VS Code 中有下面的打字稿代碼,
const hash: Map<string, number> = new Map<string, number>([
['Small', 1],
['Medium', 2],
['Large', 3],
]);
const sz = 'Small';
const num: number = hash.has(sz) ? hash.get(sz) : 0;
它一直在抱怨:
輸入'號碼 | undefined' 不可分配給型別 'number'。型別“未定義”不可分配給型別“數字”。
不確定我在這里做錯了什么。hash.has(sz) 不是已經確保 hash.get(sz) 不會未定義嗎?
我目前的方法是使用const num: number = hash.has(sz) ?哈希.get(sz)!: 0; 但這對我來說似乎并不優雅。
解決此類問題的正確方法是什么?
uj5u.com熱心網友回復:
const hash: Map<string, number> = new Map<string, number>([
['Small', 1],
['Medium', 2],
['Large', 3],
]);
const sz = 'Small';
const num: number = hash.get(sz) ?? 0;
這應該這樣做。Map.prototype.get如果找不到鍵,則回傳 undefined,我們可以將其 null 合并為 0。
uj5u.com熱心網友回復:
嘗試從陣列的第三個元素中洗掉逗號:['Large', 3]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/462376.html
