dot-notation
Enforce dot notation whenever possible.
Extending "plugin:@typescript-eslint/stylistic-type-checked"
in an ESLint configuration enables this rule.
Some problems reported by this rule are automatically fixable by the --fix
ESLint command line option.
This rule requires type information to run.
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
module.exports = {
"rules": {
// 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;
Open in PlaygroundallowProtectedClassPropertyAccess
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;
Open in PlaygroundallowIndexSignaturePropertyAccess
Example of correct code when allowIndexSignaturePropertyAccess
is set to true
:
class X {
[key: string]: number;
}
const x = new X();
x['hello'] = 123;
Open in PlaygroundIf the TypeScript compiler option noPropertyAccessFromIndexSignature
is set to true
, then the above code is always allowed, even if allowIndexSignaturePropertyAccess
is false
.
Resources
Taken with ❤️ from ESLint core