【问题标题】:Missing return type in array.maparray.map 中缺少返回类型
【发布时间】:2019-10-02 07:44:21
【问题描述】:

我在以下 TypeScript 代码中收到 Eslint 警告:

"Missing return type on function.eslint(@typescript-eslint/explicit-function-return-type)" 警告指的是 map 函数中的 lambda。

private headerSelectionChanged(event): void {
    const { checked } = event.syntheticEvent.target;
    const newGridData = this.props.gridData.map(item => Object.assign(item, { selected: checked }));
    this.updateGridData(newGridData);
}

怎么了?我该如何解决?

【问题讨论】:

    标签: typescript eslint


    【解决方案1】:

    显示警告是因为您的映射函数未指定返回类型。您必须像这样指定返回类型:

    const newGridData = this.props.gridData.map((item): any => Object.assign(item, { selected: checked }));
    

    请记住,Object.assign 修改目标而不是复制它。如果你不想修改this.props.gridData,你应该交换item{ selected: checked }

    const newGridData = this.props.gridData.map((item): any => Object.assign({ selected: checked }, item));
    

    或使用更新的object spread operator,如果有的话:

    const newGridData = this.props.gridData.map((item): any => ({ ...item, selected: checked }));
    

    【讨论】:

      【解决方案2】:

      尝试添加如下类型:

      private headerSelectionChanged(event: any): void {
      const { checked } = event.syntheticEvent.target;
      const newGridData = this.props.gridData.map((item: any) => Object.assign(item, { selected: checked }));
      this.updateGridData(newGridData);
      

      }

      【讨论】:

        【解决方案3】:

        我真的不知道“newGridData”应该是什么类型。但是假设它应该是一个名为“GridData”的类型的数组。

        private headerSelectionChanged(event): void {
            const { checked } = event.syntheticEvent.target;
            const newGridData = this.props.gridData.map<GridData>(item => Object.assign(item, { selected: checked }));
            this.updateGridData(newGridData);
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-05-21
          • 1970-01-01
          • 1970-01-01
          • 2021-09-28
          • 2020-10-12
          • 2016-10-27
          • 2011-12-30
          • 1970-01-01
          相关资源
          最近更新 更多