首页 > 解决方案 > 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不能未定义。

标签: typescript

解决方案


推荐阅读