打字稿中迭代的索引签名
Index signature for iteration in typescript
我们都可以看出这段代码是有效的javascript:
const myObj = {
foo: "string",
bar: 123,
baz: "important stuff"
};
['foo', 'bar'].forEach((key) => {
delete myObj[key];
});
元素隐式具有 'any' 类型,因为 'string' 类型的表达式不能用于索引类型 '{ foo: string;栏:数字; baz:字符串; }'。
在类型 '{ foo: string; 上找不到参数类型为 'string' 的索引签名栏:数字; baz:字符串; }'.
那么实现 TypeScript 兼容的最佳方式是什么?
一个解决方法是:
(['foo', 'bar'] as (keyof typeof myObj)[]).forEach((key) => {
delete myObj[key];
});
但它不能防止数组字符串中的输入错误。
尝试输入数组:
const myObj = {
foo: "string",
bar: 123,
baz: "important stuff"
};
const myArray: (keyof typeof myObj)[] = ['foo', 'bar']
myArray.forEach(...)
我们都可以看出这段代码是有效的javascript:
const myObj = {
foo: "string",
bar: 123,
baz: "important stuff"
};
['foo', 'bar'].forEach((key) => {
delete myObj[key];
});
元素隐式具有 'any' 类型,因为 'string' 类型的表达式不能用于索引类型 '{ foo: string;栏:数字; baz:字符串; }'。 在类型 '{ foo: string; 上找不到参数类型为 'string' 的索引签名栏:数字; baz:字符串; }'.
那么实现 TypeScript 兼容的最佳方式是什么?
一个解决方法是:
(['foo', 'bar'] as (keyof typeof myObj)[]).forEach((key) => {
delete myObj[key];
});
但它不能防止数组字符串中的输入错误。
尝试输入数组:
const myObj = {
foo: "string",
bar: 123,
baz: "important stuff"
};
const myArray: (keyof typeof myObj)[] = ['foo', 'bar']
myArray.forEach(...)