考虑以下示例:
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。用可选键对对象建模并迭代对象中所有已定义的值的正确方法是什么?
发布于 2020-03-12 06:57:06
我想这更像是一种变通方法,尽管它看起来是可行的:
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);
}示例
发布于 2020-03-12 06:54:59
Object.values似乎不被很多浏览器支持,可能会返回未定义的内容。您应该遍历Object.keys()并获取每个键的值。
请参阅:Unable to extract object values in Typescript
你想要的是:
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://stackoverflow.com/questions/60645250
复制相似问题