TSLint无法识别正确的按位运算符

时间:2018-06-13 23:08:03

标签: typescript lint tslint bitwise-or

遗憾的是,这个有效的代码被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 个答案:

答案 0 :(得分:1)

幸运的是,你可以在一行基础上禁用它,如下所示:

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;
}