Skip to content
← Back to rules

typescript/use-unknown-in-catch-callback-variable 제한

💭 This rule requires type information.
An auto-fix is available for this rule.

작동 방식

이 규칙은 any 대신 unknowncatch 절 변수에 사용하도록 강제합니다.

왜 문제가 되나요?

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

참고 자료