dot-notation
enforce dot notation whenever possible.
Rule Details
This rule extends the base eslint/dot-notation
rule.
It adds:
- Support for optionally ignoring computed
private
and/orprotected
member access. - Compatibility with TypeScript's
noPropertyAccessFromIndexSignature
option.
How to Use
{
// note you must disable the base rule as it can report incorrect errors
"dot-notation": "off",
"@typescript-eslint/dot-notation": ["error"]
}
Options
See eslint/dot-notation
options.
This rule adds the following options:
interface Options extends BaseDotNotationOptions {
allowPrivateClassPropertyAccess?: boolean;
allowProtectedClassPropertyAccess?: boolean;
allowIndexSignaturePropertyAccess?: boolean;
}
const defaultOptions: Options = {
...baseDotNotationDefaultOptions,
allowPrivateClassPropertyAccess: false,
allowProtectedClassPropertyAccess: false,
allowIndexSignaturePropertyAccess: false,
};
If the TypeScript compiler option noPropertyAccessFromIndexSignature
is set to true
, then this rule always allows the use of square bracket notation to access properties of types that have a string
index signature, even if allowIndexSignaturePropertyAccess
is false
.
allowPrivateClassPropertyAccess
Example of a correct code when allowPrivateClassPropertyAccess
is set to true
class X {
private priv_prop = 123;
}
const x = new X();
x['priv_prop'] = 123;
allowProtectedClassPropertyAccess
Example of a correct code when allowProtectedClassPropertyAccess
is set to true
class X {
protected protected_prop = 123;
}
const x = new X();
x['protected_prop'] = 123;
allowIndexSignaturePropertyAccess
Example of correct code when allowIndexSignaturePropertyAccess
is set to true
class X {
[key: string]: number;
}
const x = new X();
x['hello'] = 123;
If the TypeScript compiler option noPropertyAccessFromIndexSignature
is set to true
, then the above code is always allowed, even if allowIndexSignaturePropertyAccess
is false
.
Taken with ❤️ from ESLint core
Attributes
- Configs:
- ✅ Recommended
- 🔒 Strict
- 🔧 Fixable
- 💭 Requires type information