Skip to content
← Back to rules

typescript/no-deprecated Pedantic

💭 This rule requires type information.

작동 방식

@deprecated로 표시된 코드 사용을 금지합니다.

왜 문제가 될까?

JSDoc의 @deprecated 태그는 어떤 코드가 폐기되었음을 문서화하는 데 사용할 수 있습니다. 폐기된 코드를 사용하는 것은 최선이 아닙니다. 이 규칙은 @deprecated로 표시된 코드에 대한 모든 참조를 보고합니다.

TypeScript는 @deprecated 태그를 인식하여 편집기가 폐기된 코드를 시각적으로 나타낼 수 있게 해줍니다 — 일반적으로 취소선을 사용합니다. 그러나 TypeScript는 자체적으로 폐기된 코드에 대해 타입 오류를 보고하지 않습니다.

예시

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

ts
/** @deprecated apiV2를 사용하세요. */
declare function apiV1(): Promise<string>;
declare function apiV2(): Promise<string>;

await apiV1(); // 폐기된 함수 사용

import { parse } from "node:url";
// 'parse'는 폐기되었습니다. 대신 WHATWG URL API를 사용하세요.
const url = parse("/foo");

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

ts
/** @deprecated apiV2를 사용하세요. */
declare function apiV1(): Promise<string>;
declare function apiV2(): Promise<string>;

await apiV2(); // 폐기되지 않은 함수 사용

// 최신 Node.js API, new URL() 사용
const url2 = new URL("/foo", "http://www.example.com");

구성

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

allow

type: array

기본값: []

폐기되었더라도 사용이 허용되는 유형 또는 값 지정자 목록입니다. 의도적으로 계속 사용하고 싶은 특정 폐기된 API를 허용하려면 이 옵션을 사용하세요.

allow[n]

type: string

특정 선언을 매칭하기 위한 유형 또는 값 지정자

다음 4가지 유형의 지정자를 지원합니다:

  1. 문자열 지정자 (폐기됨): 이름으로 전역 매칭
json
"Promise"
  1. 파일 지정자: 로컬 파일 내에서 선언된 유형/값 매칭
json
{ "from": "file", "name": "MyType" }
{ "from": "file", "name": ["Type1", "Type2"] }
{ "from": "file", "name": "MyType", "path": "./types.ts" }
  1. Lib 지정자: TypeScript 내장 라이브러리 유형 매칭
json
{ "from": "lib", "name": "Promise" }
{ "from": "lib", "name": ["Promise", "PromiseLike"] }
  1. 패키지 지정자: npm 패키지에서 선언된 유형/값 매칭
json
{ "from": "package", "name": "Observable", "package": "rxjs" }
{ "from": "package", "name": ["Observable", "Subject"], "package": "rxjs" }

사용 방법

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

json
{
  "rules": {
    "typescript/no-deprecated": "error"
  }
}
bash
oxlint --type-aware --deny typescript/no-deprecated

참고 자료