首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >迭代对象的值会产生未定义的结果

迭代对象的值会产生未定义的结果
EN

Stack Overflow用户
提问于 2020-03-12 06:29:38
回答 2查看 37关注 0票数 0

考虑以下示例:

代码语言:javascript
复制
type IQByName = Partial<Record<string, number>>;
const iqByName: IQByName = { Trump: 185 };

for (const iq of Object.values(iqByName)) {
  const iq2 = 2 * iq; // Object is possibly 'undefined'
  console.log(iq2);
}

编译器抱怨iq可能是undefined。用可选键对对象建模并迭代对象中所有已定义的值的正确方法是什么?

EN

回答 2

Stack Overflow用户

发布于 2020-03-12 06:57:06

我想这更像是一种变通方法,尽管它看起来是可行的:

代码语言:javascript
复制
for (const iq of Object.values(iqByName)) {
  if (iq === undefined) throw new Error("IQ undefined.");
  const iq2 = 2 * iq; // Object is possibly 'undefined'
  console.log(iq2);
}

示例

https://repl.it/repls/ConsciousCrazyTransversals

票数 0
EN

Stack Overflow用户

发布于 2020-03-12 06:54:59

Object.values似乎不被很多浏览器支持,可能会返回未定义的内容。您应该遍历Object.keys()并获取每个键的值。

请参阅:Unable to extract object values in Typescript

你想要的是:

代码语言:javascript
复制
type IQByName = Partial<Record<string, number>>;
const iqByName: IQByName = { Trump: 185 };

for (const iqKey of  Object.keys(iqByName)) {
    const iq2 = 2 * iqByName[iqKey];
    console.log(iq2);
}

https://jsfiddle.net/9gztdxw5/

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60645250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档