Why are bitwise operators not allowed in tslint?

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

Leave a Comment