Mick
Mick

Reputation: 8913

Why are bitwise operators not allowed in tslint?

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

"no-bitwise": true,

Upvotes: 43

Views: 29363

Answers (3)

Sergey
Sergey

Reputation: 1660

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

Upvotes: 27

Grant Eagon
Grant Eagon

Reputation: 1400

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/

Upvotes: 18

Sajeetharan
Sajeetharan

Reputation: 222522

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.

Upvotes: 4

Related Questions