prefer-destructuring
配列やオブジェクトからの分割代入を必須とします。
🔧
このルールによって報告された一部の問題は、 --fix
ESLint コマンドラインオプションで自動的に修正可能です。.
💭
このルールは、実行するために 型情報 が必要です。
例
このルールは、ベースの eslint/prefer-destructuring
ルールを拡張します。変数宣言での TypeScript の型アノテーションのサポートが追加されます。
eslint/prefer-destructuring
@typescript-eslint/prefer-destructuring
const x: string = obj.x; // This is incorrect and the auto fixer provides following untyped fix.
// const { x } = obj;
プレイグラウンドで開くconst x: string = obj.x; // This is correct by default. You can also forbid this by an option.
プレイグラウンドで開くまた、型チェッカーのおかげで、バインディングパターンをより正確に推論します。
- ❌ 不正
- ✅ 正しい
const x = ['a'];
const y = x[0];
プレイグラウンドで開くconst x = { 0: 'a' };
const y = x[0];
プレイグラウンドで開くenforceForRenamedProperties
が false の場合は、正しいです。有効な分割代入の構文は、x
が反復可能ではないため、[y] = x
ではなく、{ 0: y } = x
のように名前が変更されたスタイルになります。
使い方
.eslintrc.cjs
module.exports = {
"rules": {
// Note: you must disable the base rule as it can report incorrect errors
"prefer-destructuring": "off",
"@typescript-eslint/prefer-destructuring": "error"
}
};
プレイグラウンドでこのルールを試す ↗
オプション
eslint/prefer-destructuring
のオプションを参照してください。
このルールは、以下のオプションを追加します。
type Options = [
BasePreferDestructuringOptions[0],
BasePreferDestructuringOptions[1] & {
enforceForDeclarationWithTypeAnnotation?: boolean;
},
];
const defaultOptions: Options = [
basePreferDestructuringDefaultOptions[0],
{
...basePreferDestructuringDefaultOptions[1],
enforceForDeclarationWithTypeAnnotation: false,
},
];
enforceForDeclarationWithTypeAnnotation
true
に設定すると、型注釈付きの変数宣言は分割代入を使用することが強制されます。
{ enforceForDeclarationWithTypeAnnotation: true }
を使用した例
- ❌ 不正
- ✅ 正しい
const x: string = obj.x;
プレイグラウンドで開くconst { x }: { x: string } = obj;
プレイグラウンドで開く使用しない場合
型チェックされたリンター規則は、従来のリンター規則よりも強力ですが、型チェックされたリンティングの設定も必要です。型チェックされた規則を有効にした後にパフォーマンスの低下が発生する場合は、パフォーマンスのトラブルシューティングを参照してください。