The JavaScript exception "derived class constructor returned invalid value x" occurs when a derived class constructor returns a value that is not an object or undefined
.
TypeError: Derived constructors may only return object or undefined (V8-based) TypeError: derived class constructor returned invalid value 1 (Firefox) TypeError: Cannot return a non-object type in the constructor of a derived class. (Safari)Error type What went wrong?
Typically, a constructor does not need to return anythingâthe value of this
is automatically returned when the class is constructed. A constructor can also return an object, and this object will override this
as the newly constructed instance. However, returning something that's neither an object nor undefined
is usually a mistake, because that value is ignored. In base classes and function constructors (using the function
syntax), returning such a value is silently ignored, while in derived classes, it throws an error.
class Base {
constructor() {}
}
class Derived extends Base {
constructor() {
return 2;
}
}
new Derived(); // TypeError: derived class constructor returned invalid value 2
Valid cases
class Base {
constructor() {}
}
class Derived extends Base {
constructor() {
return { x: 1 };
}
}
new Derived(); // { x: 1 }
See also
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4