跳至主要内容

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"
}
};

在游乐场中尝试此规则 ↗

选项

请参阅 eslint/dot-notation 选项

此规则添加了以下选项

interface Options extends BaseDotNotationOptions {
allowPrivateClassPropertyAccess?: boolean;
allowProtectedClassPropertyAccess?: boolean;
allowIndexSignaturePropertyAccess?: boolean;
}

const defaultOptions: Options = {
...baseDotNotationDefaultOptions,
allowPrivateClassPropertyAccess: false,
allowProtectedClassPropertyAccess: false,
allowIndexSignaturePropertyAccess: false,
};

如果 TypeScript 编译器选项 noPropertyAccessFromIndexSignature 设置为 true,则此规则始终允许使用方括号表示法访问具有 string 索引签名的类型的属性,即使 allowIndexSignaturePropertyAccessfalse

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,则即使 allowIndexSignaturePropertyAccessfalse,上述代码也始终允许。

何时不使用它

如果您出于风格原因特别想使用两种成员访问方式,或者不想强制执行一种风格,您可以避免使用此规则。

但是,请记住,不一致的风格会损害项目的可读性。我们建议为该规则选择一个最适合您项目的选项。


类型检查的 lint 规则比传统的 lint 规则更强大,但也需要配置 类型检查的 lint。如果您在启用类型检查规则后遇到性能下降,请参阅 性能故障排除

资源

来自 ESLint 核心 的 ❤️。