Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sync with english version for TypeError #9246

Merged
merged 1 commit into from
Oct 14, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5,77 +5,69 @@ slug: Web/JavaScript/Reference/Global_Objects/TypeError

{{JSRef}}

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

## 语法
以下情况会抛出 `TypeError`

```plain
new TypeError([message[, fileName[, lineNumber]]])
```

### 参数

- `message 消息`
- : 可选。描述此错误
- `fileName 文件名` {{non-standard_inline}}
- : 可选。引起该异常的代码所在的文件的名字。
- `lineNumber 行号` {{non-standard_inline}}
- : 可选。引起该异常的代码的行号。

## 描述

当传入函数的**操作数****参数**的类型并非操作符或函数所预期的类型时,将抛出一个 TypeError 类型错误。

## 属性

- {{jsxref("TypeError.prototype")}}
- : 允许为一个 TypeError 类型错误附加属性。

## 方法

全局 TypeError 不包含任何方法,不过,它将从原型链中继承一些方法。
- 传递给运算符的操作数或传递给函数的参数与预期的类型不兼容;或
- 尝试修改无法更改的值;或
- 尝试以不适当的方法使用一个值。

## `TypeError` 类型错误实例
`TypeError` 是一个{{Glossary("serializable object", "可序列化对象")}},所以可以使用 {{domxref("structuredClone()")}} 对它进行克隆,也可以使用 {{domxref("Worker/postMessage()", "postMessage()")}} 在 [Worker](/zh-CN/docs/Web/API/Worker) 之间拷贝它。

### 属性
## 构造函数

{{page('/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/TypeError/prototype', '属性')}}
- {{jsxref("Global_Objects/TypeError/TypeError", "TypeError()")}}
- : 创建一个新的 `TypeError` 对象。

### 方法
## 实例属性

{{page('/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/TypeError/prototype', '方法')}}
- {{jsxref("Error.prototype.message")}}
- : 错误消息。继承自 {{jsxref("Error")}}。
- {{jsxref("Error.prototype.name")}}
- : 错误名称。继承自 {{jsxref("Error")}}。
- {{jsxref("Error.prototype.cause")}}
- : 表示导致当前错误被抛出的原因。继承自 {{jsxref("Error")}}。
- {{jsxref("Error.prototype.fileName")}} {{non-standard_inline}}
- : 引发此错误的文件的路径。继承自 {{jsxref("Error")}}。
- {{jsxref("Error.prototype.lineNumber")}} {{non-standard_inline}}
- : 引发此错误的代码所在的文件的行号。继承自 {{jsxref("Error")}}。
- {{jsxref("Error.prototype.columnNumber")}} {{non-standard_inline}}
- : 引发此错误的代码在文件中所在行的列号。继承自 {{jsxref("Error")}}。
- {{jsxref("Error.prototype.stack")}} {{non-standard_inline}}
- : 堆栈跟踪。继承自 {{jsxref("Error")}}。

## 示例

### 示例:捕获类型错误
### 捕获类型错误

```js
try {
null.f();
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"
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"
}
```

### 示例:创建一个类型错误
### 创建一个类型错误

```js
try {
throw new TypeError('Hello', "someFile.js", 10);
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"
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"
}
```

Expand All @@ -87,7 +79,6 @@ try {

{{Compat}}

## 相关链接
## 参见

- {{jsxref("Error")}}
- {{jsxref("TypeError.prototype")}}