typescript/no-unsafe-call Pedantic
작동 방식
이 규칙은 any 타입을 가진 값에 대한 호출을 금지합니다.
왜 문제인가요?
타입스크립트에서 any 타입은 타입 검사를 비활성화합니다. any로 타입 지정된 값을 호출할 경우, 타입스크립트는 해당 값이 실제로 함수인지, 어떤 매개변수를 기대하는지, 또는 무엇을 반환하는지 확인할 수 없습니다. 이로 인해 런타임 오류가 발생할 수 있습니다.
예시
이 규칙에 부적절한 코드 예시:
ts
declare const anyValue: any;
anyValue(); // 안전하지 않은 호출
anyValue(1, 2, 3); // 안전하지 않은 호출
const result = anyValue("hello"); // 안전하지 않은 호출
// 연속된 안전하지 않은 호출
anyValue().then().catch(); // 안전하지 않음이 규칙에 적절한 코드 예시:
ts
declare const fn: () => void;
declare const fnWithParams: (a: number, b: string) => boolean;
declare const unknownValue: unknown;
fn(); // 안전함
const result = fnWithParams(1, "hello"); // 안전함
// unknown에 대한 타입 가드
if (typeof unknownValue === "function") {
unknownValue(); // 타입 가드 이후 안전함
}
// 확신이 있다면 명시적 타입 캐스팅 사용
(anyValue as () => void)(); // 명시적으로 안전하지 않지만 의도적임사용 방법
이 규칙을 구성 파일 또는 CLI를 통해 활성화하려면 다음을 사용할 수 있습니다:
json
{
"rules": {
"typescript/no-unsafe-call": "error"
}
}bash
oxlint --type-aware --deny typescript/no-unsafe-call