TypeError

TypeError(类型错误)对象通常(但并不只是)用来表示值的类型非预期类型时发生的错误。

以下情况会抛出 TypeError

  • 传递给运算符的操作数或传递给函数的参数与预期的类型不兼容;或
  • 尝试修改无法更改的值;或
  • 尝试以不适当的方法使用一个值。

TypeError 是一个可序列化对象 (en-US),所以可以使用 structuredClone() 对它进行克隆,也可以使用 postMessage()Worker 之间拷贝它。

构造函数

TypeError() (en-US)

创建一个新的 TypeError 对象。

实例属性

Error.prototype.message

错误消息。继承自 Error

Error.prototype.name

错误名称。继承自 Error

Error.prototype.cause (en-US)

表示导致当前错误被抛出的原因。继承自 Error

Error.prototype.fileName 非标准

引发此错误的文件的路径。继承自 Error

Error.prototype.lineNumber 非标准

引发此错误的代码所在的文件的行号。继承自 Error

Error.prototype.columnNumber 非标准

引发此错误的代码在文件中所在行的列号。继承自 Error

Error.prototype.stack 非标准

堆栈跟踪。继承自 Error

示例

捕获类型错误

try {
  null.f()
} catch (e) {
  console.log(e instanceof TypeError)  // true
  console.log(e.message)               // "null has no properties"
  console.log(e.name)                  // "TypeError"
  console.log(e.fileName)              // "Scratchpad/1"
  console.log(e.lineNumber)            // 2
  console.log(e.columnNumber)          // 2
  console.log(e.stack)                 // "@Scratchpad/2:2:3\n"
}

创建一个类型错误

try {
  throw new TypeError('Hello', "someFile.js", 10)
} catch (e) {
  console.log(e instanceof TypeError)  // true
  console.log(e.message)               // "Hello"
  console.log(e.name)                  // "TypeError"
  console.log(e.fileName)              // "someFile.js"
  console.log(e.lineNumber)            // 10
  console.log(e.columnNumber)          // 0
  console.log(e.stack)                 // "@Scratchpad/2:2:9\n"
}

规范

Specification
ECMAScript Language Specification
# sec-native-error-types-used-in-this-standard-typeerror

浏览器兼容性

BCD tables only load in the browser

参见