typescript/use-unknown-in-catch-callback-variable 제한
작동 방식
이 규칙은 any 대신 unknown을 catch 절 변수에 사용하도록 강제합니다.
왜 문제가 되나요?
TypeScript 4.0 이상부터는 catch 절 변수를 any 대신 unknown으로 타입 지정할 수 있습니다. unknown을 사용하는 것은 더 안전하며, 오류를 사용하기 전에 타입 검사를 수행하도록 강제함으로써 잠재적인 런타임 오류를 방지합니다.
예시
이 규칙에 대한 잘못된 코드 예시:
ts
try {
somethingRisky();
} catch (error: any) {
// 'unknown'을 사용해야 함
console.log(error.message); // 안전하지 않은 접근
error.someMethod(); // 안전하지 않은 호출
}
// 오래된 TypeScript에서는 기본 캐치 변수가 'any'임
try {
somethingRisky();
} catch (error) {
// 암시적으로 'any'
console.log(error.message); // 안전하지 않은 접근
}이 규칙에 대한 올바른 코드 예시:
ts
try {
somethingRisky();
} catch (error: unknown) {
// Error 객체에 대한 타입 가드
if (error instanceof Error) {
console.log(error.message); // 안전한 접근
console.log(error.stack);
} else {
console.log("알 수 없는 오류:", error);
}
}
// 더 포괄적인 오류 처리
try {
somethingRisky();
} catch (error: unknown) {
if (error instanceof Error) {
// Error 객체 처리
console.error("오류:", error.message);
} else if (typeof error === "string") {
// 문자열 오류 처리
console.error("문자열 오류:", error);
} else {
// 알 수 없는 오류 유형 처리
console.error("알 수 없는 오류 유형:", error);
}
}
// 오류 처리용 도우미 함수
function isError(error: unknown): error is Error {
return error instanceof Error;
}
try {
somethingRisky();
} catch (error: unknown) {
if (isError(error)) {
console.log(error.message);
}
}사용 방법
이 규칙을 구성 파일 또는 명령줄 인터페이스에서 활성화하려면 다음을 사용할 수 있습니다:
json
{
"rules": {
"typescript/use-unknown-in-catch-callback-variable": "error"
}
}bash
oxlint --type-aware --deny typescript/use-unknown-in-catch-callback-variable