]> git.proxmox.com Git - pve-eslint.git/blob - eslint/docs/rules/no-setter-return.md
first commit
[pve-eslint.git] / eslint / docs / rules / no-setter-return.md
1 # Disallow returning values from setters (no-setter-return)
2
3 Setters cannot return values.
4
5 While returning a value from a setter does not produce an error, the returned value is being ignored. Therefore, returning a value from a setter is either unnecessary or a possible error, since the returned value cannot be used.
6
7 ## Rule Details
8
9 This rule disallows returning values from setters and reports `return` statements in setter functions.
10
11 Only `return` without a value is allowed, as it's a control flow statement.
12
13 This rule checks setters in:
14
15 * Object literals.
16 * Class declarations and class expressions.
17 * Property descriptors in `Object.create`, `Object.defineProperty`, `Object.defineProperties`, and `Reflect.defineProperty` methods of the global objects.
18
19 Examples of **incorrect** code for this rule:
20
21 ```js
22 /*eslint no-setter-return: "error"*/
23
24 var foo = {
25 set a(value) {
26 this.val = value;
27 return value;
28 }
29 };
30
31 class Foo {
32 set a(value) {
33 this.val = value * 2;
34 return this.val;
35 }
36 }
37
38 const Bar = class {
39 static set a(value) {
40 if (value < 0) {
41 this.val = 0;
42 return 0;
43 }
44 this.val = value;
45 }
46 };
47
48 Object.defineProperty(foo, "bar", {
49 set(value) {
50 if (value < 0) {
51 return false;
52 }
53 this.val = value;
54 }
55 });
56 ```
57
58 Examples of **correct** code for this rule:
59
60 ```js
61 /*eslint no-setter-return: "error"*/
62
63 var foo = {
64 set a(value) {
65 this.val = value;
66 }
67 };
68
69 class Foo {
70 set a(value) {
71 this.val = value * 2;
72 }
73 }
74
75 const Bar = class {
76 static set a(value) {
77 if (value < 0) {
78 this.val = 0;
79 return;
80 }
81 this.val = value;
82 }
83 };
84
85 Object.defineProperty(foo, "bar", {
86 set(value) {
87 if (value < 0) {
88 throw new Error("Negative value.");
89 }
90 this.val = value;
91 }
92 });
93 ```
94
95 ## Further Reading
96
97 * [MDN setter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/set)
98
99 ## Related Rules
100
101 * [getter-return](getter-return.md)