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

Typescript TSLint无法识别正确的位运算符,typescript,lint,tslint,bitwise-or,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 functio

遗憾的是,默认设置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

TSLint的作者有一个策略,将此设置为默认错误。然而,Typescript编译器和正确的编程用法表明这是|运算符的正确使用。在某些情况下,如果您打算按位使用,将其称为错误显然是愚蠢的


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

幸运的是,您可以在单行基础上禁用此选项,如下所示:

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

我的观察是,TSLint中的规则不使用类型信息,除非是绝对必要的。规则就是这样。如果需要类型信息,这条规则可以以不同的方式强制执行,但这会带来性能成本,并且会强制执行
tsconfig.json
文件。非常感谢。我尝试使用【@ts ignore】,但没有成功。但是使用你的【tslint:disable next line】可以生效。
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;
}