TypeScript TS7015:元素隐式具有“任何”类型,因为索引表达式不是“数字”类型

新手上路,请多包涵

我在我的 Angular 2 应用程序中收到此编译错误:

TS7015:元素隐式具有“任何”类型,因为索引表达式不是“数字”类型。

导致它的代码是:

 getApplicationCount(state:string) {
    return this.applicationsByState[state] ? this.applicationsByState[state].length : 0;
  }

但是,这不会导致此错误:

 getApplicationCount(state:string) {
    return this.applicationsByState[<any>state] ? this.applicationsByState[<any>state].length : 0;
  }

这对我来说没有任何意义。我想在第一次定义属性时解决它。目前我正在写:

 private applicationsByState: Array<any> = [];

但有人提到问题是试图使用字符串类型作为数组中的索引,我应该使用映射。但我不知道该怎么做。

感谢您的帮助!

原文由 Ole Spaarmann 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 698
1 个回答

如果你想要一个键/值数据结构,那么不要使用数组。

您可以使用常规对象:

 private applicationsByState: { [key: string]: any[] } = {};

getApplicationCount(state: string) {
    return this.applicationsByState[state] ? this.applicationsByState[state].length : 0;
}

或者您可以使用 Map

 private applicationsByState: Map<string, any[]> = new Map<string, any[]>();

getApplicationCount(state: string) {
    return this.applicationsByState.has(state) ? this.applicationsByState.get(state).length : 0;
}

原文由 Nitzan Tomer 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题