]>
Commit | Line | Data |
---|---|---|
8f9d1d4d DC |
1 | --- |
2 | title: constructor-super | |
8f9d1d4d DC |
3 | rule_type: problem |
4 | --- | |
eb39fafa DC |
5 | |
6 | Constructors of derived classes must call `super()`. | |
7 | Constructors of non derived classes must not call `super()`. | |
8 | If this is not observed, the JavaScript engine will raise a runtime error. | |
9 | ||
10 | This rule checks whether or not there is a valid `super()` call. | |
11 | ||
12 | ## Rule Details | |
13 | ||
14 | This rule is aimed to flag invalid/missing `super()` calls. | |
15 | ||
16 | Examples of **incorrect** code for this rule: | |
17 | ||
8f9d1d4d DC |
18 | :::incorrect |
19 | ||
eb39fafa DC |
20 | ```js |
21 | /*eslint constructor-super: "error"*/ | |
22 | /*eslint-env es6*/ | |
23 | ||
24 | class A { | |
25 | constructor() { | |
26 | super(); // This is a SyntaxError. | |
27 | } | |
28 | } | |
29 | ||
30 | class A extends B { | |
31 | constructor() { } // Would throw a ReferenceError. | |
32 | } | |
33 | ||
34 | // Classes which inherits from a non constructor are always problems. | |
35 | class A extends null { | |
36 | constructor() { | |
37 | super(); // Would throw a TypeError. | |
38 | } | |
39 | } | |
40 | ||
41 | class A extends null { | |
42 | constructor() { } // Would throw a ReferenceError. | |
43 | } | |
44 | ``` | |
45 | ||
8f9d1d4d DC |
46 | ::: |
47 | ||
eb39fafa DC |
48 | Examples of **correct** code for this rule: |
49 | ||
8f9d1d4d DC |
50 | :::correct |
51 | ||
eb39fafa DC |
52 | ```js |
53 | /*eslint constructor-super: "error"*/ | |
54 | /*eslint-env es6*/ | |
55 | ||
56 | class A { | |
57 | constructor() { } | |
58 | } | |
59 | ||
60 | class A extends B { | |
61 | constructor() { | |
62 | super(); | |
63 | } | |
64 | } | |
65 | ``` | |
66 | ||
8f9d1d4d DC |
67 | ::: |
68 | ||
eb39fafa DC |
69 | ## When Not To Use It |
70 | ||
71 | If you don't want to be notified about invalid/missing `super()` callings in constructors, you can safely disable this rule. |