typescript - TSLint 无法识别正确的按位运算符
问题描述
可悲的是,这个有效的代码被 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 详细 --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 问题,但保持全局设置不变。
解决方案
幸运的是,您可以在单行的基础上禁用它,如下所示:
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;
}
推荐阅读
- r - ggplot:如何从 facet_wrap 中删除空组?
- sql - 尝试创建存储过程 db2 时出错
- php - 如何显示blade.php 文件列表但省略扩展名?
- sql - SQL SUM 直到条件
- python - 在文本文件python中对齐多个函数
- python-3.x - 用户输入和条件语句以及代码执行延迟和循环
- javascript - 从文件系统创建对象树
- c++ - 如何返回在我的函数中创建的数组的 unique_ptr?
- html - 如何在不使用跨度的情况下让我的所有 h2 使用相同的类?我希望我所有的 h2 都使用 .fancy_underline 类
- c# - 如何将 X(:,J) 等 Fortran 子数组语法转换为 VB.NET 和 C#