【问题标题】:Get rid of eslint@typescript-eslint/no-unused-vars error when index is not used in map function typescript摆脱 eslint@typescript-eslint/no-unused-vars 错误在 map 函数 typescript 中未使用索引时
【发布时间】:2021-01-19 05:19:00
【问题描述】:

我得到了这个代码:

const reducer = (element:number, index: number) => [element]; //es lint error.
const positionsArray = $.map(this.positions, reducer);

我正在将 Float32Array(它是 this.positions)转换为 js 数组。 我得到错误: 'index' 已定义但从未使用过。eslint@typescript-eslint/no-unused-vars

我无法应用“// eslint-disable-line no-unused-vars”(顺便说一句,我认为这不是一个令人愉快的解决方案)

对于这种我不需要索引的情况,如何摆脱这个错误?我检查了 reduce 并尝试检索累加器,但没有实现。 谢谢。

编辑: 如果我没有定义索引,我会收到此错误:

【问题讨论】:

  • 只是为了确定,this.positions Float32Array 和$ jQuery?
  • 是的,没错。感谢您的提问,因为这应该在问题中很清楚
  • 显然,原则上您不应该更改逻辑正确的代码以满足类型检查器的要求,但是当数组本身提供了一个 jQuery 映射时,您为什么还要使用它呢?

标签: typescript eslint map-function


【解决方案1】:

不要定义参数。 TypeScript 和 JavaScript 都不要求您使用回调可能接受的所有参数。

您还可以通过调用迭代器将类型化数组转换为普通数组 - 看起来 jQuery 的 .map 不能很好地处理它,因此请改用纯 JS:

const positionsArray = [...this.positions].map(element => [element]);

如果你只想从类型化数组中得到一个普通数组,不要使用.map,只需要单独调用迭代器即可:

const positionsArray = [...this.positions];

【讨论】:

  • 感谢您的回答。我试过了,但如果不定义索引会出错。查看更新的问题
  • 返回一个二维数组(number[][])。我想用 float32Array 组件获得一个 number[] 。另一方面,TypeScript 和 JavaScript 都不需要你使用所有参数,但是如果你有 eslint 配置来避免未使用的 vars,并且想继续使用它,那么就是 ESLint 需求。我的意思是,即使 Javascript 和 typescript 不会抱怨,我也不想删除该 linting 选项。
  • 如果您只想将类型化数组转换为普通数组而不是其他任何东西,那么 .map 没有任何意义 - 只需调用类型化数组的迭代器即可。
  • [...this.positions] 是我一直在寻找的。非常感谢
猜你喜欢
  • 2020-01-25
  • 2021-02-22
  • 2019-08-12
  • 2020-12-25
  • 1970-01-01
  • 2019-07-06
  • 2018-06-27
相关资源
最近更新 更多