打字稿中迭代的索引签名
Posted
技术标签:
【中文标题】打字稿中迭代的索引签名【英文标题】:Index signature for iteration in typescript 【发布时间】:2020-02-19 15:21:15 【问题描述】:我们都可以看到这段代码是有效的javascript:
const myObj =
foo: "string",
bar: 123,
baz: "important stuff"
;
['foo', 'bar'].forEach((key) =>
delete myObj[key];
);
元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引类型“ foo: string;酒吧:数字; baz:字符串; '。 在类型 ' foo: string; 上找不到具有类型参数的索引签名。酒吧:数字; baz:字符串; '。
那么,实现这种 TypeScript 兼容的最佳方式是什么?
【问题讨论】:
typescriptlang.org/play/#code/… 【参考方案1】:尝试输入您的数组:
const myObj =
foo: "string",
bar: 123,
baz: "important stuff"
;
const myArray: (keyof typeof myObj)[] = ['foo', 'bar']
myArray.forEach(...)
【讨论】:
【参考方案2】:一种解决方法是:
(['foo', 'bar'] as (keyof typeof myObj)[]).forEach((key) =>
delete myObj[key];
);
但它并不能防止在数组字符串中输入错误。
【讨论】:
以上是关于打字稿中迭代的索引签名的主要内容,如果未能解决你的问题,请参考以下文章