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;
在 Playground 中打开const x: string = obj.x; // This is correct by default. You can also forbid this by an option.
在 Playground 中打开并且它借助类型检查器更准确地推断绑定模式。
- ❌ 错误
- ✅ 正确
const x = ['a'];
const y = x[0];
在 Playground 中打开const x = { 0: 'a' };
const y = x[0];
在 Playground 中打开当 enforceForRenamedProperties
不为真时,它是正确的。有效的解构语法是重命名样式,例如 { 0: y } = x
而不是 [y] = x
,因为 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"
}
};
在 playground 中尝试此规则 ↗
选项
参见 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;
在 Playground 中打开const { x }: { x: string } = obj;
在 Playground 中打开何时不使用它
类型检查的 lint 规则比传统的 lint 规则更强大,但也需要配置 类型检查的 lint。如果您在启用类型检查的规则后遇到性能下降,请参见 性能故障排除。