]>
Commit | Line | Data |
---|---|---|
eb39fafa DC |
1 | # Disallow modifying variables of class declarations (no-class-assign) |
2 | ||
3 | `ClassDeclaration` creates a variable, and we can modify the variable. | |
4 | ||
5 | ```js | |
6 | /*eslint-env es6*/ | |
7 | ||
8 | class A { } | |
9 | A = 0; | |
10 | ``` | |
11 | ||
12 | But the modification is a mistake in most cases. | |
13 | ||
14 | ## Rule Details | |
15 | ||
16 | This rule is aimed to flag modifying variables of class declarations. | |
17 | ||
18 | Examples of **incorrect** code for this rule: | |
19 | ||
20 | ```js | |
21 | /*eslint no-class-assign: "error"*/ | |
22 | /*eslint-env es6*/ | |
23 | ||
24 | class A { } | |
25 | A = 0; | |
26 | ``` | |
27 | ||
28 | ```js | |
29 | /*eslint no-class-assign: "error"*/ | |
30 | /*eslint-env es6*/ | |
31 | ||
32 | A = 0; | |
33 | class A { } | |
34 | ``` | |
35 | ||
36 | ```js | |
37 | /*eslint no-class-assign: "error"*/ | |
38 | /*eslint-env es6*/ | |
39 | ||
40 | class A { | |
41 | b() { | |
42 | A = 0; | |
43 | } | |
44 | } | |
45 | ``` | |
46 | ||
47 | ```js | |
48 | /*eslint no-class-assign: "error"*/ | |
49 | /*eslint-env es6*/ | |
50 | ||
51 | let A = class A { | |
52 | b() { | |
53 | A = 0; | |
54 | // `let A` is shadowed by the class name. | |
55 | } | |
56 | } | |
57 | ``` | |
58 | ||
59 | Examples of **correct** code for this rule: | |
60 | ||
61 | ```js | |
62 | /*eslint no-class-assign: "error"*/ | |
63 | /*eslint-env es6*/ | |
64 | ||
65 | let A = class A { } | |
66 | A = 0; // A is a variable. | |
67 | ``` | |
68 | ||
69 | ```js | |
70 | /*eslint no-class-assign: "error"*/ | |
71 | /*eslint-env es6*/ | |
72 | ||
73 | let A = class { | |
74 | b() { | |
75 | A = 0; // A is a variable. | |
76 | } | |
77 | } | |
78 | ``` | |
79 | ||
80 | ```js | |
81 | /*eslint no-class-assign: 2*/ | |
82 | /*eslint-env es6*/ | |
83 | ||
84 | class A { | |
85 | b(A) { | |
86 | A = 0; // A is a parameter. | |
87 | } | |
88 | } | |
89 | ``` | |
90 | ||
91 | ## When Not To Use It | |
92 | ||
93 | If you don't want to be notified about modifying variables of class declarations, you can safely disable this rule. |