]> git.proxmox.com Git - pve-eslint.git/blame - eslint/docs/src/rules/no-useless-rename.md
import 8.41.0 source
[pve-eslint.git] / eslint / docs / src / rules / no-useless-rename.md
CommitLineData
8f9d1d4d
DC
1---
2title: no-useless-rename
8f9d1d4d
DC
3rule_type: suggestion
4related_rules:
5- object-shorthand
6---
7
8
eb39fafa
DC
9
10ES2015 allows for the renaming of references in import and export statements as well as destructuring assignments. This gives programmers a concise syntax for performing these operations while renaming these references:
11
12```js
13import { foo as bar } from "baz";
14export { foo as bar };
15let { foo: bar } = baz;
16```
17
18With this syntax, it is possible to rename a reference to the same name. This is a completely redundant operation, as this is the same as not renaming at all. For example, this:
19
20```js
21import { foo as foo } from "bar";
22export { foo as foo };
23let { foo: foo } = bar;
24```
25
26is the same as:
27
28```js
29import { foo } from "bar";
30export { foo };
31let { foo } = bar;
32```
33
34## Rule Details
35
36This rule disallows the renaming of import, export, and destructured assignments to the same name.
37
eb39fafa
DC
38## Options
39
40This rule allows for more fine-grained control with the following options:
41
8f9d1d4d
DC
42* `ignoreImport`: When set to `true`, this rule does not check imports
43* `ignoreExport`: When set to `true`, this rule does not check exports
44* `ignoreDestructuring`: When set to `true`, this rule does not check destructuring assignments
eb39fafa
DC
45
46By default, all options are set to `false`:
47
48```json
49"no-useless-rename": ["error", {
50 "ignoreDestructuring": false,
51 "ignoreImport": false,
52 "ignoreExport": false
53}]
54```
55
56Examples of **incorrect** code for this rule by default:
57
8f9d1d4d
DC
58::: incorrect
59
eb39fafa
DC
60```js
61/*eslint no-useless-rename: "error"*/
62
63import { foo as foo } from "bar";
8f9d1d4d 64import { "foo" as foo } from "bar";
eb39fafa 65export { foo as foo };
8f9d1d4d 66export { foo as "foo" };
eb39fafa 67export { foo as foo } from "bar";
8f9d1d4d 68export { "foo" as "foo" } from "bar";
eb39fafa
DC
69let { foo: foo } = bar;
70let { 'foo': foo } = bar;
71function foo({ bar: bar }) {}
72({ foo: foo }) => {}
73```
74
8f9d1d4d
DC
75:::
76
eb39fafa
DC
77Examples of **correct** code for this rule by default:
78
8f9d1d4d
DC
79::: correct
80
eb39fafa
DC
81```js
82/*eslint no-useless-rename: "error"*/
83
84import * as foo from "foo";
85import { foo } from "bar";
86import { foo as bar } from "baz";
8f9d1d4d 87import { "foo" as bar } from "baz";
eb39fafa
DC
88
89export { foo };
90export { foo as bar };
8f9d1d4d 91export { foo as "bar" };
eb39fafa 92export { foo as bar } from "foo";
8f9d1d4d 93export { "foo" as "bar" } from "foo";
eb39fafa
DC
94
95let { foo } = bar;
96let { foo: bar } = baz;
97let { [foo]: foo } = bar;
98
99function foo({ bar }) {}
100function foo({ bar: baz }) {}
101
102({ foo }) => {}
103({ foo: bar }) => {}
104```
105
8f9d1d4d
DC
106:::
107
eb39fafa
DC
108Examples of **correct** code for this rule with `{ ignoreImport: true }`:
109
8f9d1d4d
DC
110::: correct
111
eb39fafa
DC
112```js
113/*eslint no-useless-rename: ["error", { ignoreImport: true }]*/
114
115import { foo as foo } from "bar";
116```
117
8f9d1d4d
DC
118:::
119
eb39fafa
DC
120Examples of **correct** code for this rule with `{ ignoreExport: true }`:
121
8f9d1d4d
DC
122::: correct
123
eb39fafa
DC
124```js
125/*eslint no-useless-rename: ["error", { ignoreExport: true }]*/
126
127export { foo as foo };
128export { foo as foo } from "bar";
129```
130
8f9d1d4d
DC
131:::
132
eb39fafa
DC
133Examples of **correct** code for this rule with `{ ignoreDestructuring: true }`:
134
8f9d1d4d
DC
135::: correct
136
eb39fafa
DC
137```js
138/*eslint no-useless-rename: ["error", { ignoreDestructuring: true }]*/
139
140let { foo: foo } = bar;
141function foo({ bar: bar }) {}
142({ foo: foo }) => {}
143```
144
8f9d1d4d
DC
145:::
146
eb39fafa
DC
147## When Not To Use It
148
149You can safely disable this rule if you do not care about redundantly renaming import, export, and destructuring assignments.
150
151## Compatibility
152
8f9d1d4d 153* **JSCS**: [disallowIdenticalDestructuringNames](https://jscs-dev.github.io/rule/disallowIdenticalDestructuringNames)