Typescript TSLint无法识别正确的位运算符
遗憾的是,默认设置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
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;
}