TypeError: derived class constructor returned invalid value x
当派生类构造函数返回一个不是对象或 undefined 的值时,会发生 JavaScript 异常“派生类构造函数返回无效值 x”。
消息
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)
错误类型
TypeError
哪里出错了?
通常,构造函数不需要返回任何东西——当类被构造时,this 的值会自动返回。构造函数也可以返回一个对象,并且这个对象将覆盖 this 作为新构造的实例。然而,返回既不是对象也不是 undefined 的东西通常是一个错误,因为该值会被忽略。在基类和函数构造函数(使用 function 语法)中,返回此类值会被静默忽略,而在派生类中,它会抛出错误。
示例
无效案例
js
class Base {
constructor() {}
}
class Derived extends Base {
constructor() {
return 2;
}
}
new Derived(); // TypeError: derived class constructor returned invalid value 2
有效情况
js
class Base {
constructor() {}
}
class Derived extends Base {
constructor() {
return { x: 1 };
}
}
new Derived(); // { x: 1 }