typescript/no-unnecessary-type-assertion 의심스러움
작동 방식
이 규칙은 표현식의 타입을 변경하지 않는 타입 명시를 금지합니다.
왜 문제가 될까요?
표현식의 타입을 실제로 변경하지 않는 타입 명시는 불필요하며 안전하게 제거할 수 있습니다. 이러한 명시는 추가적인 시각적 혼란만 만들 뿐 어떠한 이점도 제공하지 않으며, 타입스크립트의 타입 시스템에 대한 오해를 시사할 수 있습니다.
예시
이 규칙에 부적절한 코드 예시:
ts
const str: string = "hello";
const redundant = str as string; // 불필요함, 이미 문자열임
function getString(): string {
return "hello";
}
const result = getString() as string; // 불필요함, 이미 문자열 반환
const num = 42;
const alsoRedundant = num as 42; // 타입스크립트가 리터럴 타입을 추론할 수 있다면 불필요함
// 더 넓은 타입으로의 불필요한 명시
const literal = "hello" as string;이 규칙에 적절한 코드 예시:
ts
const unknown: unknown = "hello";
const str = unknown as string; // 타입을 좁히기 위해 필요함
const element = document.getElementById("myElement") as HTMLInputElement; // 특정 요소 타입을 위해 필요함
const obj = { name: "John" };
const name = obj.name as const; // 리터럴 타입을 위해 필요함
// 명시가 필요 없음
const str2: string = "hello";
const num: number = 42;구성
이 규칙은 다음 속성을 가진 구성 객체를 수용합니다.
checkLiteralConstAssertions
type: boolean
기본값: false
'foo' as const와 같은 리터럴 const 명시를 확인할지 여부. false(기본값)인 경우, 리터럴 타입의 const 명시는 경고되지 않습니다. true인 경우, 타입이 이미 리터럴이므로 이들 명시는 불필요하다고 보고됩니다.
typesToIgnore
type: string[]
기본값: []
불필요한 명시를 확인할 때 무시할 타입 이름 목록입니다. 이 타입으로의 타입 명시는 불필요해 보여도 경고되지 않습니다. 예: ["Foo", "Bar"]로 설정하면 x as Foo 또는 x as Bar를 허용합니다.
사용 방법
이 규칙을 활성화하려면 구성 파일이나 CLI를 사용하여 다음과 같이 수행할 수 있습니다:
json
{
"rules": {
"typescript/no-unnecessary-type-assertion": "error"
}
}bash
oxlint --type-aware --deny typescript/no-unnecessary-type-assertion