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

标签 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 编译器和正确的编程用法表明这是对 | 的正确使用。运算符(operator)。在某些情况下,您打算按位使用,将其称为错误是很愚蠢的。

我不知道如何根据具体情况关闭此 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;
}

关于typescript - TSLint 无法识别正确的按位运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50847522/

相关文章:

typescript - TS lint 不允许前导下划线

eclipse - SonarLint 无法连接到 SonarQube 服务器

android - 清理未使用的 Android 权限

typescript - 预期对象是一种标量可观察对象,但它是可观察对象

javascript - 如何配置 d3-cloud 以在 Angular2 中拥有链接?

vue.js - linting 时应该使用 "plugin:vue/essential"和 "plugin:vue/vue3-recommended"吗?

javascript - Visual Studio代码: Remove unused parameters on callback functions breaks code

typescript - 找不到模块 './..../x.html' - TsLint/Angular-Meteor

typescript - 在 TypeScript 中,为什么隐私符号会向消费者抛出错误?

constructor - 如何在 TypeScript 中匿名类