我在 VS Code 中有下面的 typescript 代码,
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'。类型“undefined”不可分配给类型“number”。
不确定我在这里做错了什么。 hash.has(sz) 不是已经确保 hash.get(sz) 不会未定义吗?
我当前的方法是使用 const num: number = hash.has(sz) ? hash.get(sz)! : 0;但这对我来说似乎不太优雅。
解决此类问题的正确方法是什么?
最佳答案
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。
关于TypeScript 映射 : Type 'number | undefined' is not assignable to type 'number' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71970946/