TypeScript warning => TS7017:对象类型的索引签名隐式具有任何类型

时间:2017-03-11 21:01:07

标签: node.js typescript typescript2.2

我收到以下TypeScript警告 -

  

对象类型的索引签名隐式具有任何类型

以下是警告的代码:

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
}

1 个答案:

答案 0 :(得分:2)

您可以在接口定义中添加索引器属性:

events[k];

允许您通过索引访问它:const ev = events[k]; 。对于union索引器,最好让编译器推断出类型而不是显式定义它:

["john","clara","paul"]