0

我们都可以看到这段代码是有效的javascript:

const myObj = {
  foo: "string",
  bar: 123,
  baz: "important stuff"
};

['foo', 'bar'].forEach((key) => {
  delete myObj[key];
});

元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引类型“{ foo: string; 酒吧:数字;baz:字符串;}'。在类型 '{ foo: string; 上找不到具有类型参数的索引签名。酒吧:数字;baz:字符串;}'。

那么实现这种 TypeScript 兼容的最佳方式是什么?

4

2 回答 2

1

尝试输入您的数组:

const myObj = {
  foo: "string",
  bar: 123,
  baz: "important stuff"
};

const myArray: (keyof typeof myObj)[] = ['foo', 'bar']

myArray.forEach(...)
于 2019-10-23T11:32:24.787 回答
0

一种解决方法是:

(['foo', 'bar'] as (keyof typeof myObj)[]).forEach((key) => {
  delete myObj[key];
});

但它不能防止在数组字符串中输入错误。

于 2019-10-23T11:27:22.297 回答