Skip to content
← Back to rules

eslint/no-unsafe-negation 정확성

This rule is turned on by default.
An auto-fix is available for this rule.

작동 방식

관계 연산자 왼쪽 피연산자를 부정하는 것을 금지하여, 연산자 우선순위에 대한 오해나 의도치 않은 부정 사용으로 인한 논리적 오류를 방지합니다.

이 규칙은 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

참조