0

我收到以下 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
}
4

1 回答 1

2

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

interface ISumanEvent extends String {
  explanation: string,
  toString: TSumanToString,
  [key: string]: string|TSumanToString|ISumanEvent;
}

这将允许您像您一样通过索引访问它:events[k];. 同样使用联合索引器,最好让编译器推断类型而不是显式定义它:

const ev = events[k];
于 2017-03-11T21:05:09.717 回答