メインコンテンツへスキップ

不要な型アサーションを禁止します。

式の型を変更しない型アサーションを禁止します。

拡張 "plugin:@typescript-eslint/recommended-type-checked" ESLint設定 で有効にすると、このルールが有効になります。

🔧

このルールによって報告される問題の一部は、 --fix ESLintコマンドラインオプション.

によって自動的に修正できます。

このルールには 型情報 が必要です。

TypeScriptでは、`as`型アサーションを使用して、式が期待される型とは異なる型であることを指定できます。コードベースに`as`アサーションを残しておくと、視覚的な混乱が増加し、コードの可読性が損なわれるため、式の型を変更しない場合は、一般的にそれらを削除するのが最良の方法です。このルールは、型アサーションが式の型を変更しない場合に報告します。

.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/no-unnecessary-type-assertion": "error"
}
};

Playgroundでこのルールを試してみてください ↗

const foo = 3;
const bar = foo!;
Playgroundで開く
const foo = <number>(3 + 5);
Playgroundで開く
type Foo = number;
const foo = <Foo>(3 + 5);
Playgroundで開く
type Foo = number;
const foo = (3 + 5) as Foo;
Playgroundで開く
const foo = 'foo' as const;
Playgroundで開く
function foo(x: number): number {
return x!; // unnecessary non-null
}
Playgroundで開く

オプション

このルールは、以下のオプションを受け付けます。

type Options = [
{
/** A list of type names to ignore. */
typesToIgnore?: string[];
},
];

const defaultOptions: Options = [{}];

typesToIgnore

@typescript-eslint/no-unnecessary-type-assertion: ["error", { typesToIgnore: ['Foo'] }]を使用すると、以下は**正しい**コードになります。

type Foo = 3;
const foo: Foo = 3;
Playgroundで開く

使用しない場合

コードに無効な型アサーションがあっても構わない場合は、このルールをオフにすることができます。


型チェックされたlintルールは、従来のlintルールよりも強力ですが、型チェックされたlintingの設定も必要です。型チェックされたルールを有効にした後にパフォーマンスの低下が発生した場合は、パフォーマンスに関するトラブルシューティングを参照してください。

リソース