typescript - For-in 循环不能在 `Partial 上正常工作>`
问题描述
以下代码将一些键转换为数字:
export type Dict<K extends keyof any, T> = Partial<Record<K, T>>;
function numberized(obj: Dict<string, string>, keys: string[]): Dict<string, string | number> {
const result: Dict<string, string | number> = {};
for (const key in obj) {
const value = obj[key];
result[key] = keys.includes(key) ? parseFloat(value) : value;
}
return result;
}
编译器抱怨:
Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
Type 'undefined' is not assignable to type 'string'.ts(2345)
const value: string | undefined
然而,从构造
for (const key in obj) {
const value = obj[key];
编译器应该知道value
不能未定义。