不要な型アサーションを禁止します。
式の型を変更しない型アサーションを禁止します。
✅
拡張 "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で開くconst foo = <number>3;
Playgroundで開くconst foo = 3 as number;
Playgroundで開くlet foo = 'foo' as const;
Playgroundで開くfunction foo(x: number | undefined): number {
return x!;
}
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の設定も必要です。型チェックされたルールを有効にした後にパフォーマンスの低下が発生した場合は、パフォーマンスに関するトラブルシューティングを参照してください。