Angular:为什么在tslint中不允许使用按位运算符?

Mic*_*ick 16 typescript tslint angular

我们不能在模板中使用按位运算符,但为什么在TypeScript代码中tslint不允许它们?

"no-bitwise": true,
Run Code Online (Sandbox Code Playgroud)

Ser*_*gey 18

Linter 的存在有多种原因:帮助维护一致、干净和可读的代码,捕捉开发人员的错误(例如,无法访问的代码或未使用的变量)并警告您潜在的不良做法,即使它们在技术上是允许的。

TSLint 文档中所述

按位运算符通常是拼写错误 - 例如,bool1 & bool2而不是bool1 && bool2. 它们也可能表明代码过于聪明,从而降低了可维护性。

由于这些类型的拼写错误比按位运算符的实际有效使用更常见,TSLint默认禁止它们。

除非您正在开发的应用程序的唯一目的是进行按位运算,否则最好保持启用规则(因为就像其他人一样,很容易犯这种类型的错字)。但是,如果您确实有一个有效的情况可以按位使用,则暂时 针对该行或代码块禁用该规则,如下所示:

/* tslint:disable:no-bitwise */
const redColor = (decimalColor & 0xff0000) >> 16;
const greenColor = (decimalColor & 0x00ff00) >> 8;
const blueColor = decimalColor & 0x0000ff;
/* tslint:enable:no-bitwise */
Run Code Online (Sandbox Code Playgroud)

不要忘记重新启用规则!

或单行:

// tslint:disable-next-line:no-bitwise
const redColor = (decimalColor & 0xff0000) >> 16;
Run Code Online (Sandbox Code Playgroud)

如果使用 ESLint,请参阅此处的文档

  • 遗憾的是没有 lint 规则说“你忘记重新启用你禁用的规则”。 (2认同)

Gra*_*gon 9

按位运算符通常是拼写错误 - 例如bool1&bool2而不是bool1 && bool2.它们也可以成为过于聪明的代码的指标,降低了可维护性.

https://palantir.github.io/tslint/rules/no-bitwise/

  • Angular中禁止使用过于聪明的代码 (44认同)
  • @Mick哈哈哈,这让我很难笑了2分钟! (2认同)

Saj*_*ran 4

如果你看一下Docs

“位运算符在 JavaScript 程序中很少见”

无论如何,您可以禁用按位选项来停止警告。

  • 这是 JSHint,不是 Angular 角度的解释。而且就算是稀有的东西,也不应该被禁止吧? (4认同)