Why are bitwise operators not allowed in tslint?

后端 未结 3 1205
耶瑟儿~
耶瑟儿~ 2021-01-01 11:24

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

\"no-bitwise\": true,
相关标签:
3条回答
  • 2021-01-01 11:48

    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.

    0 讨论(0)
  • 2021-01-01 12:01

    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/

    0 讨论(0)
  • 2021-01-01 12:01

    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

    0 讨论(0)
提交回复
热议问题