TypeScript 映射:类型 'number | undefined' 不可分配给类型 'number'
TypeScript Map: Type 'number | undefined' is not assignable to type 'number'
我在 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;
一直抱怨:
类型 'number | undefined' 不能分配给类型 'number'。类型 'undefined' 不能分配给类型 'number'.
不确定我在这里做错了什么。 hash.has(sz) 是否已经确保 hash.get(sz) 不会未定义?
我目前的做法是使用 const num: number = hash.has(sz) ? hash.get(sz)! : 0; 但对我来说似乎并不优雅
解决此类问题的正确方法是什么?
尝试从数组的第 3 个元素中删除逗号:['Large', 3]
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
returns undefined 如果找不到键,我们可以将其空合并为0.
我在 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;
一直抱怨:
类型 'number | undefined' 不能分配给类型 'number'。类型 'undefined' 不能分配给类型 'number'.
不确定我在这里做错了什么。 hash.has(sz) 是否已经确保 hash.get(sz) 不会未定义?
我目前的做法是使用 const num: number = hash.has(sz) ? hash.get(sz)! : 0; 但对我来说似乎并不优雅
解决此类问题的正确方法是什么?
尝试从数组的第 3 个元素中删除逗号:['Large', 3]
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
returns undefined 如果找不到键,我们可以将其空合并为0.