dot-notation
尽可能使用点符号。
🎨
在 "plugin:@typescript-eslint/stylistic-type-checked"
中扩展 ESLint 配置 可以启用此规则。
🔧
此规则报告的一些问题可以通过 --fix
ESLint 命令行选项 自动修复。
💭
此规则需要 类型信息 才能运行。
此规则扩展了基本 eslint/dot-notation
规则。它添加了
- 支持可选地忽略计算的
private
和/或protected
成员访问。 - 与 TypeScript 的
noPropertyAccessFromIndexSignature
选项兼容。
如何使用
.eslintrc.cjs
module.exports = {
"rules": {
// Note: you must disable the base rule as it can report incorrect errors
"dot-notation": "off",
"@typescript-eslint/dot-notation": "error"
}
};
在游乐场中尝试此规则 ↗
选项
此规则添加了以下选项
interface Options extends BaseDotNotationOptions {
allowPrivateClassPropertyAccess?: boolean;
allowProtectedClassPropertyAccess?: boolean;
allowIndexSignaturePropertyAccess?: boolean;
}
const defaultOptions: Options = {
...baseDotNotationDefaultOptions,
allowPrivateClassPropertyAccess: false,
allowProtectedClassPropertyAccess: false,
allowIndexSignaturePropertyAccess: false,
};
如果 TypeScript 编译器选项 noPropertyAccessFromIndexSignature
设置为 true
,则此规则始终允许使用方括号表示法访问具有 string
索引签名的类型的属性,即使 allowIndexSignaturePropertyAccess
为 false
。
allowPrivateClassPropertyAccess
当 allowPrivateClassPropertyAccess
设置为 true
时,正确代码的示例
class X {
private priv_prop = 123;
}
const x = new X();
x['priv_prop'] = 123;
在游乐场中打开allowProtectedClassPropertyAccess
当 allowProtectedClassPropertyAccess
设置为 true
时,以下代码示例是正确的
class X {
protected protected_prop = 123;
}
const x = new X();
x['protected_prop'] = 123;
在游乐场中打开allowIndexSignaturePropertyAccess
当 allowIndexSignaturePropertyAccess
设置为 true
时,以下代码示例是正确的
class X {
[key: string]: number;
}
const x = new X();
x['hello'] = 123;
在游乐场中打开如果 TypeScript 编译器选项 noPropertyAccessFromIndexSignature
设置为 true
,则即使 allowIndexSignaturePropertyAccess
为 false
,上述代码也始终允许。
何时不使用它
如果您出于风格原因特别想使用两种成员访问方式,或者不想强制执行一种风格,您可以避免使用此规则。
但是,请记住,不一致的风格会损害项目的可读性。我们建议为该规则选择一个最适合您项目的选项。
类型检查的 lint 规则比传统的 lint 规则更强大,但也需要配置 类型检查的 lint。如果您在启用类型检查规则后遇到性能下降,请参阅 性能故障排除。