Urara-Blog/node_modules/.pnpm-store/v3/files/ed/c649b5fdd603c7807eae64493ba1267320eecff0c1e0bc95cecf4fab8dd36c973eb6fae93c2d2c080bf9febedc098a5f41798c9cc887885aa5a43cf8816293
2022-08-14 01:14:53 +08:00

93 lines
2.4 KiB
Text

---
description: 'Enforce dot notation whenever possible.'
---
> 🛑 This file is source code, not the primary documentation location! 🛑
>
> See **https://typescript-eslint.io/rules/dot-notation** for documentation.
## Rule Details
This rule extends the base [`eslint/dot-notation`](https://eslint.org/docs/rules/dot-notation) rule.
It adds:
- Support for optionally ignoring computed `private` and/or `protected` member access.
- Compatibility with TypeScript's `noPropertyAccessFromIndexSignature` option.
## How to Use
```jsonc
{
// 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`](https://eslint.org/docs/rules/dot-notation#options) options.
This rule adds the following options:
```ts
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`
```ts
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`
```ts
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`
```ts
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`.
<sup>
Taken with ❤️ [from ESLint core](https://github.com/eslint/eslint/blob/main/docs/rules/dot-notation.md)
</sup>