TypeError: конструктор производного класса вернул недопустимое значение x
JavaScript-исключение "derived class constructor returned invalid value x" возникает, когда конструктор производного класса возвращает значение, которое не является объектом или 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)
Тип ошибки
Что пошло не так?
Как правило, конструктору не нужно ничего возвращать — значение this автоматически возвращается при создании экземпляра класса. Конструктор также может вернуть объект, и этот объект переопределит this как вновь созданный экземпляр. Однако возврат чего-либо, не являющегося ни объектом, ни undefined, обычно является ошибкой, поскольку это значение игнорируется. В базовых классах и функциональных конструкторах (с использованием синтаксиса function) такое возвращаемое значение молчаливо игнорируется, в то время как в производных классах оно вызывает ошибку.
Примеры
Недопустимые случаи
class Base {
constructor() {}
}
class Derived extends Base {
constructor() {
return 2;
}
}
new Derived(); // TypeError: derived class constructor returned invalid value 2
Допустимые случаи
class Base {
constructor() {}
}
class Derived extends Base {
constructor() {
return { x: 1 };
}
}
new Derived(); // { x: 1 }
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Invalid_derived_return