【问题标题】:tslint: Is there a way to disable prefer-const within a loop?tslint:有没有办法在循环中禁用prefer-const?
【发布时间】:2020-01-24 18:56:46
【问题描述】:

tslint 5.11 刚刚进行了以下letconst 的转换:

for (let i = 0, len = array.length; i < len; ++i) {
  let column = array[i];

for (let i = 0, len = array.length; i < len; ++i) {
  const column = array[i];

但是(虽然可能是无害的)我认为这种改变是错误的! (因为它是不必要的和误导性的。)

有没有办法在循环中禁用letconst 的转换? 虽然我可以使用rule flags 逐个禁用prefer-const,但我宁愿不要用这些cmets 污染我的代码。理想情况下,我可以使用tslint.json 中的设置来解决此问题。

【问题讨论】:

  • 你能提供额外的代码吗? column 在后面的代码行中是做什么用的?
  • 没关系 - 代码是通用的。而不是 column 我们可以称之为 elem 可能(对于 Array 元素,不一定是 DOM 元素)
  • 好的。据我所知letconst 消耗更多的内存。并且只要不在后续代码中重新赋值column,建议使用const而不是let。阻止它的方法如下:palantir.github.io/tslint/rules/prefer-const
  • 我不确定我是否理解; prefer-const 设置是我如何完全禁用 letconst 的转换,但我希望只在循环中禁用它。这不可能吗?
  • 不幸的是,我找不到比这更精细的开关了。我想目前无法区分这些情况。你要么完全做,要么根本不做。对不起。

标签: typescript tslint


【解决方案1】:

ATTOW 似乎无法使用 tslint 的 prefer-const(或任何其他配置设置)在循环内禁用 letconst 的转换。
(非常感谢@Lynx242 的调查和洞察!)

我最终做的是将我的变量声明移到循环体之外:

for (let i = 0, len = array.length; i < len; ++i) {
  const column = array[i];

进入for循环的初始化块:

for (let i = 0, len = array.length, column; i < len; ++i) {
  column = array[i];

这里我们不会在循环的每次迭代中重新声明column;虽然性能提升可能很小,恕我直言,这段代码感觉更干净,更不混乱。

【讨论】:

    猜你喜欢
    • 2018-09-17
    • 2015-08-26
    • 2016-04-30
    • 1970-01-01
    • 2011-11-26
    • 2011-04-30
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    相关资源
    最近更新 更多