[英]Using generics in a for loop in Typescript
这是这个问题的后续: 在重新分配值时维护每个键的对象值类型这会产生一个错误:
const obj = {
a: 1,
b: 'foo',
};
for (const k of (Object.keys(obj) as (keyof typeof obj)[])) {
obj[k] = obj[k];
}
为了修复它,我可以使用泛型和forEach
:
(Object.keys(obj) as (keyof typeof obj)[])
.forEach(<T extends keyof typeof obj>(k: T) => {
obj[k] = obj[k];
});
有没有办法在 for 循环中使用泛型? 我没有在我的代码库中的其他任何地方使用forEach
,我希望保持一致。 另外,我不想定义单独的(非匿名)函数,因为forEach
会更干净。
这是不可能的。 在这种情况下,TypeScript 不够聪明,无法检测到允许访问和分配它。 您唯一可以做的就是在该行上方添加@ts-ignore
注释:
const obj = {
a: 1,
b: 'foo',
};
for (const k of (Object.keys(obj) as (keyof typeof obj)[])) {
// @ts-ignore
obj[k] = obj[k];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.