eslint/no-unsafe-negation 정확성
작동 방식
관계 연산자 왼쪽 피연산자를 부정하는 것을 금지하여, 연산자 우선순위에 대한 오해나 의도치 않은 부정 사용으로 인한 논리적 오류를 방지합니다.
이 규칙은 TypeScript 코드의 경우 비활성화할 수 있으며, 이는 TypeScript 컴파일러가 이 검사를 강제하기 때문입니다.
왜 좋지 않은가?
관계 연산자의 왼쪽 피연산자를 부정하면 연산자 우선순위로 인해 예기치 못한 동작이 발생할 수 있으며, 이는 논리적 오류를 초래할 수 있습니다. 예를 들어, !a in b는 의도한 바인 !(a in b)가 아니라 (!a) in b로 해석될 수 있으며, 이는 원하는 논리와 다릅니다.
예시
이 규칙에 부적절한 코드 예시:
javascript
if (!key in object) {}
if (!obj instanceof Ctor) {}적절한 코드 예시:
javascript
if (!(key in object)) {}
if (!(obj instanceof Ctor)) {}구성
이 규칙은 다음 속성을 가진 구성 객체를 수락합니다.
enforceForOrderingRelations
type: boolean
기본값: false
enforceForOrderingRelations 옵션은 순서 관계 연산자(<, >, <=, >=)의 왼쪽에 부정을 허용할지 여부를 결정합니다.
이 목적은 실제로는 !(a < b)라고 의도한 것이지만, !a < b처럼 표현되는 경우(이는 (a ? 0 : 1) < b와 동일함)를 피하기 위함입니다.
사용 방법
이 규칙을 활성화하려면 구성 파일이나 명령줄 인터페이스에서 다음과 같이 사용할 수 있습니다:
json
{
"rules": {
"no-unsafe-negation": "error"
}
}bash
oxlint --deny no-unsafe-negation