TypeScript 警告 => TS7017:对象类型的索引签名隐式具有任何类型
TypeScript warning => TS7017: Index signature of object type implicitly has any type
我收到以下 TypeScript 警告 -
Index signature of object type implicitly has any type
这是引起警告的代码:
Object.keys(events).forEach(function (k: string) {
const ev: ISumanEvent = events[k]; // warning is for this line!!
const toStr = String(ev);
assert(ev.explanation.length > 20, ' => (collapsed).');
if (toStr !== k) {
throw new Error(' => (collapsed).');
}
});
任何人都可以从此代码块中确定出现警告的原因吗?我想不通。
如果有帮助,这是 ISumanEvent
的定义:
interface ISumanEvent extends String {
explanation: string,
toString: TSumanToString
}
您可以将索引器 属性 添加到您的接口定义中:
interface ISumanEvent extends String {
explanation: string,
toString: TSumanToString,
[key: string]: string|TSumanToString|ISumanEvent;
}
这将允许您像您一样通过索引访问它:events[k];
。同样使用联合索引器,最好让编译器推断类型而不是显式定义它:
const ev = events[k];
我收到以下 TypeScript 警告 -
Index signature of object type implicitly has any type
这是引起警告的代码:
Object.keys(events).forEach(function (k: string) {
const ev: ISumanEvent = events[k]; // warning is for this line!!
const toStr = String(ev);
assert(ev.explanation.length > 20, ' => (collapsed).');
if (toStr !== k) {
throw new Error(' => (collapsed).');
}
});
任何人都可以从此代码块中确定出现警告的原因吗?我想不通。
如果有帮助,这是 ISumanEvent
的定义:
interface ISumanEvent extends String {
explanation: string,
toString: TSumanToString
}
您可以将索引器 属性 添加到您的接口定义中:
interface ISumanEvent extends String {
explanation: string,
toString: TSumanToString,
[key: string]: string|TSumanToString|ISumanEvent;
}
这将允许您像您一样通过索引访问它:events[k];
。同样使用联合索引器,最好让编译器推断类型而不是显式定义它:
const ev = events[k];