dot-notation
Enforce dot notation whenever possible.
Extending "plugin:@typescript-eslint/strict" 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.
Examples
This rule extends the base eslint/dot-notation rule.
It adds:
- Support for optionally ignoring computed privateand/orprotectedmember access.
- Compatibility with TypeScript's noPropertyAccessFromIndexSignatureoption.
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": "warn"
  }
};
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