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 --форматировать многословно --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 и правильное использование программирования требуют правильного использования | оператор. В случаях, когда вы намереваетесь использовать побитовое, называть это ошибкой просто глупо.
Я не знаю, как отключить эту проблему в каждом конкретном случае, но не изменяю глобальные параметры.
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;
}