prefer-destructuring
要求從陣列和/或物件解構。
🔧
這個規則報告的一些問題可以透過 --fix
ESLint 命令列選項.
自動修正
💭 這項規則需要 類型資訊
才能執行。
範例
- 此規則擴充基本
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;
`@typescript-eslint/prefer-destructuring`const x: string = obj.x; // This is correct by default. You can also forbid this by an option.
`@typescript-eslint/prefer-destructuring`在 Playground 中開啟
- 它可更精確地推斷繫結模式,這要歸功於類型檢查器。
- ❌ 不正確
const x = ['a'];
const y = x[0];
`@typescript-eslint/prefer-destructuring`const x = { 0: 'a' };
const y = x[0];
`@typescript-eslint/prefer-destructuring`✅ 正確
如何使用
.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;
`@typescript-eslint/prefer-destructuring`const { x }: { x: string } = obj;
`@typescript-eslint/prefer-destructuring`不適用的情境
類型檢查的 linter 規則較傳統 linter 規則強大,但也需要設定類型檢查 linting。啟用類型檢查規則後,如果效能降低,請參閱效能疑難排解。