Skip to content
← Back to rules

typescript/prefer-optional-chain Nursery

💭 This rule requires type information.
⚠️🛠️💡 A dangerous auto-fix and a suggestion are available for this rule.

작동 방식

널리 값이 될 수 있는 표현식에 대해 연결된 로직적 논리 연산자(&&), 부정된 논리적 배타적 연산자(||) 또는 빈 객체 대신 간결한 선택적 체인 표현식을 사용하도록 강제합니다.

참고로, 이 규칙은 다양한 예외 케이스 상황에서 정확히 작동하는지 확인하기 위해 ' nursery' 카테고리에 있습니다. 이 규칙의 논리는 복잡하며, 자동 수정 기능은 일부 예외 케이스에서 로직 변경을 유발할 수 있습니다.

왜 좋지 않은가?

TypeScript 3.7에서는 선택적 체인(?.)을 도입하여 가능성이 있는 널리 값(널 또는 언디피니드)에 대한 속성에 접근하는 더 간결하고 가독성이 좋은 방법을 제공했습니다. 로직적 && 체인이나 기타 패턴 대신 선택적 체인을 사용하면 코드의 명확성이 향상됩니다.

예시

이 규칙에 부적절한 코드 예시:

ts
foo && foo.bar;
foo && foo.bar && foo.bar.baz;
foo && foo["bar"];
foo && foo.bar && foo.bar.baz && foo.bar.baz.buzz;
foo && foo.bar && foo.bar.baz.buzz;
foo && foo.bar.baz && foo.bar.baz.buzz;
(foo || {}).bar;

이 규칙에 적절한 코드 예시:

ts
foo?.bar;
foo?.bar?.baz;
foo?.["bar"];
foo?.bar?.baz?.buzz;
foo?.bar?.baz.buzz;
foo?.bar.baz?.buzz;
foo?.bar;

구성

이 규칙은 다음 속성을 가진 구성 객체를 수용합니다.

allowPotentiallyUnsafeFixesThatModifyTheReturnTypeIKnowWhatImDoing

type: boolean

기본값: false

표현식의 반환 타입을 변경하는 자동 수정 기능을 허용합니다. 이 옵션은 안전하지 않으며 빌드를 깨뜨릴 수 있습니다.

checkAny

type: boolean

기본값: true

"느슨한 부울" 연산자 검사 시 any 타입으로 지정된 연산자를 확인합니다.

checkBigInt

type: boolean

기본값: true

"느슨한 부울" 연산자 검사 시 bigint 타입으로 지정된 연산자를 확인합니다.

checkBoolean

type: boolean

기본값: true

"느슨한 부울" 연산자 검사 시 boolean 타입으로 지정된 연산자를 확인합니다.

checkNumber

type: boolean

기본값: true

"느슨한 부울" 연산자 검사 시 number 타입으로 지정된 연산자를 확인합니다.

checkString

type: boolean

기본값: true

"느슨한 부울" 연산자 검사 시 string 타입으로 지정된 연산자를 확인합니다.

checkUnknown

type: boolean

기본값: true

"느슨한 부울" 연산자 검사 시 unknown 타입으로 지정된 연산자를 확인합니다.

requireNullish

type: boolean

기본값: false

"느슨한 부울" 연산자 검사 시 null 및/또는 undefined로 타입 지정되지 않은 연산자를 건너뜁니다.

사용 방법

구성 파일이나 명령줄 인터페이스를 통해 이 규칙을 활성화하려면 다음을 사용할 수 있습니다:

json
{
  "rules": {
    "typescript/prefer-optional-chain": "error"
  }
}
bash
oxlint --type-aware --deny typescript/prefer-optional-chain

참고 자료