Es la clase general cuando una categoría más concreta no representa mejor el problema.
JavaScript
thrownewError("Order cannot be completed",);
Puede ser suficiente para una aplicación pequeña. En una API pública o un dominio importante, un error personalizado suele comunicar mejor el contrato.
Indica que un valor no tiene el tipo, forma o capacidad requerida para una operación.
El lenguaje puede producirlo:
JavaScript
const user =null;
user.name;// TypeError
También puedes utilizarlo para contratos de funciones:
JavaScript
functioncalculateTotal(prices){if(!Array.isArray(prices)){thrownewTypeError("prices must be an array",);}return prices.reduce((total, price)=> total + price,0,);}
Un TypeError no significa únicamente que typeof produjo un valor distinto. También puede indicar que un objeto carece del comportamiento esperado.
JavaScript
functionexecute(callback){if(typeof callback !=="function"){thrownewTypeError("callback must be a function",);}callback();}
Indica que el tipo general es válido, pero el valor está fuera del rango permitido.
JavaScript
functionsetVolume(volume){if(!Number.isFinite(volume)){thrownewTypeError("volume must be a finite number",);}if(volume <0|| volume >100){thrownewRangeError("volume must be between 0 and 100",);}}
Primero se comprueba el tipo o la forma; después el rango.
Para decisiones normales suele preferirse instanceof.
JavaScript
if(error instanceofTypeError){// ...}
Sin embargo, objetos provenientes de otro realm —por ejemplo, ciertos iframes— pueden tener constructores distintos aunque representen el mismo tipo conceptual. En fronteras públicas puede ser útil combinar clases propias con códigos estables.
No intentes representar todos los problemas del dominio con las clases nativas. Su propósito principal es describir categorías generales del lenguaje y sus APIs.
functionparsePage(value){const page =Number(value);if(!Number.isInteger(page)){thrownewTypeError("page must be an integer",);}if(page <1){thrownewRangeError("page must be greater than zero",);}return page;}
Los dos errores permiten distinguir una forma inválida de un número fuera del rango permitido.