42

We can't use bitwise operators in templates, but why are they not allowed by tslint within TypeScript code?

"no-bitwise": true,
Sergey
  • 1,608
  • 1
  • 27
  • 40
Mick
  • 8,203
  • 10
  • 44
  • 66

3 Answers3

26

Linters exist for multiple reasons: to help maintain consistent, clean and readable code, catch developer mistakes (e.g. unreachable code or unused variables) and to warn you about potentially bad practices even though they may technically be allowed.

As mentioned in the TSLint documentation

Bitwise operators are often typos - for example bool1 & bool2 instead of bool1 && bool2. They also can be an indicator of overly clever code which decreases maintainability.

Since these types of typos are so much more common than actual valid uses of bitwise operators, TSLint forbids them by default.

Unless you're working on an application whose sole purpose is to do bitwise operations, it's best to keep the rule enabled (because just like anyone else you are prone to making this kind of typo). If however you do have a valid case to use bitwise, then disable the rule temporarily just for that line or block of code, like this:

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

don't forget to re-enable the rule!

or for a single line:

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

If using ESLint, see documentation here

Sergey
  • 1,608
  • 1
  • 27
  • 40
18

Bitwise operators are often typos - for example bool1 & bool2 instead of bool1 && bool2. They also can be an indicator of overly clever code which decreases maintainability.

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

Grant Eagon
  • 1,400
  • 1
  • 12
  • 24
4

If you look at the Docs

"Bitwise operators are very rare in JavaScript programs"

anyhow you can disable the bitwise option to stop the warnings.

Sajeetharan
  • 216,225
  • 63
  • 350
  • 396
  • 4
    This is JSHint not an explanation from Angular perspective. And even if something is rare, it should not be forbidden? – Mick Dec 03 '17 at 20:23
  • 1
    Angular does not have anything to do with above, its Typescript , also check here https://github.com/palantir/tslint/issues/18 – Sajeetharan Dec 03 '17 at 20:26