【问题标题】:ESLINT: Prevent the use of double exclamation (!!)ESLINT:防止使用双感叹号(!!)
【发布时间】:2022-01-03 09:03:37
【问题描述】:

阻止eslint(使用eslint --fix时)改变需要什么规则和配置:

return regex.test(foo) ? true : false

进入这个:

return !!regex.test(postalCode)

虽然我了解这条规则的作用,但我不喜欢它。我认为它可能是其中之一 - 但是,它要么两者都不是,要么我只是不明白如何正确配置它们。

// eslintrc.js

module.exports = {
  rules: {
    'no-implicit-coercion': [2, { string: false, boolean: false, number: false }],
    'no-extra-boolean-cast': [2, { enforceForLogicalOperands: true }],
  }
}

【问题讨论】:

  • 为什么还要有三元呢? .test 返回一个布尔值
  • 也许是no-uneeded-ternary? (当然可以证明这种三元是多余的......)
  • 为什么不运行没有修复的 eslint 并查看针对特定情况触发的规则?
  • [DanielA.White] 代表我的例子很糟糕,但最终有效地证明了我所指的内容。 [AlexanderNied] 那是票友。干杯。 [ASDFGerte] 回想起来,你是绝对正确的。我不知道为什么我不想这样做,哈哈。
  • 我无法通过 eslint 将可读的 return a ? true : false 转换为 return !!a。它确实将其转换为return Boolean(a)。在 eslint (eslint.org/docs/rules/no-implicit-coercion) 中不鼓励使用 !!,我不明白为什么“修复”会使用不鼓励的做法。

标签: javascript eslint eslintrc


【解决方案1】:

看起来no-unneeded-ternary 正在转换它,因为它最终是多余的,并且可以在没有三元组的情况下更干净简洁地编写。也就是说,作为Salman A points out in the comments,有点奇怪的是,修复本身正在利用被认为是!! 布尔转换的不良做法。

【讨论】:

    猜你喜欢
    • 2012-03-06
    • 2012-07-07
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多