【发布时间】:2021-06-14 03:16:29
【问题描述】:
// common.js
const boxNames = ['one', 'two'];
module.exports {
boxNames,
}
const common = require("./common.js");
const boxNames = common.boxNames;
const messages = {
'one': {
id: 'some id',
text: 'some text',
},
'two': {
id: 'some id',
text: 'some text',
},
};
const disabled = boxNames.map((key: string) => messages[key]);
以上代码为messages[key] 语句产生了TypeScript 错误:
TS7053:元素隐式具有“任何”类型,因为表达式 type 'string' 不能用于索引 type '{ one: { id: string;文本: 细绳; };二:{id:字符串;文本:字符串; }; }'。无索引 在“{ one:”类型上找到带有“字符串”类型参数的签名 { id:字符串;文本:字符串; };二:{id:字符串;文本:字符串; }; }'。
我将key 声明为字符串,而messages 的键是字符串,那么有什么问题呢?
(这里值得注意的是,messages 是使用 react-intl 库中的 defineMessages 方法生成的。)
(我在 StackOverflow 上看到了一些与 Object.keys 类似的答案,但我不确定这与我的 TypeScript 错误有何关系。)
【问题讨论】:
标签: typescript