Skip to content
← Back to rules

typescript/no-deprecated 厳格

💭 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

default: []

非推奨であっても使用を許可する型または値の指定子の配列です。意図的に継続して使用したい特定の非推奨な 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" }

使用方法

設定ファイルまたは CLI でこのルールを有効化するには、次のように使用できます:

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

参照