【问题标题】:TypeScript warning => TS7017: Index signature of object type implicitly has any typeTypeScript 警告 => TS7017:对象类型的索引签名隐含地具有任何类型
【发布时间】:2017-08-02 02:36:11
【问题描述】:

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

【问题讨论】:

    标签: node.js typescript typescript2.2


    【解决方案1】:

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

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

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

    const ev = events[k];
    

    【讨论】:

      猜你喜欢
      • 2016-01-25
      • 1970-01-01
      • 1970-01-01
      • 2016-04-07
      • 2017-08-03
      • 2017-05-06
      • 2019-01-06
      • 1970-01-01
      • 2019-07-11
      相关资源
      最近更新 更多