代码之家  ›  专栏  ›  技术社区  ›  Kim Gentes

tslint无法识别正确的位运算符

  •  2
  • Kim Gentes  · 技术社区  · 7 年前

    遗憾的是,这个有效的代码被默认的tslint设置认为是疏忽大意的:

    export const NO_FLAG: number = 0x0000;
    export const DESTROY_FLAG: number = 0x0001;
    export const NULL_FLAG: number = 0x0100;
    export const START_FLAG: number = 0x0200;
    export const STOP_FLAG: number = 0x0400;
    
    export function getPackedFlags(destroy: boolean,
                                   nullThing: boolean,
                                   start: boolean,
                                   stop: boolean): number {
        const bitFlags: number = ((destroy) ? DESTROY_FLAG: NO_FLAG) |
                                ((nullThing) ? NULL_FLAG: NO_FLAG) |
                                ((start) ? START_FLAG: NO_FLAG) |
                                ((stop) ? STOP_FLAG: NO_FLAG);
        return bitFlags;
    }
    

    这样做会产生这种输出:

    tslint--project./tsconfig.json--format verbose--force

    ERROR: (no-bitwise) C:/git/my-stuff/src/index.ts[393, 34]: Forbidden bitwise operation
    ERROR: (no-bitwise) C:/git/my-stuff/src/index.ts[393, 34]: Forbidden bitwise operation
    ERROR: (no-bitwise) C:/git/my-stuff/src/index.ts[393, 34]: Forbidden bitwise operation
    

    tslint的作者有一个将其设置为默认错误的策略。但是,typescript编译器和正确的编程用法指示正确使用运算符。在某些情况下,如果您打算使用位,那么将其称为错误显然是愚蠢的。

    我不知道如何逐个关闭这个linting问题,但保持全局设置不变。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Kim Gentes    7 年前

    export function getPackedFlags(destroy: boolean,
                                   nullThing: boolean,
                                   start: boolean,
                                   stop: boolean): number {
        // tslint:disable-next-line:no-bitwise
        const bitFlags: number = ((destroy) ? DESTROY_FLAG: NO_FLAG) |
                                ((nullThing) ? NULL_FLAG: NO_FLAG) |
                                ((start) ? START_FLAG: NO_FLAG) |
                                ((stop) ? STOP_FLAG: NO_FLAG);
        return bitFlags;
    }