diff --git a/zh-cn/application-dev/reference/apis/js-apis-call.md b/zh-cn/application-dev/reference/apis/js-apis-call.md
index a2f6a42f20cd78caa3a3e45f21e40e43266397b2..92e280289e4501a046c62eae17409827deb11740 100644
--- a/zh-cn/application-dev/reference/apis/js-apis-call.md
+++ b/zh-cn/application-dev/reference/apis/js-apis-call.md
@@ -2719,6 +2719,91 @@ call.off('mmiCodeResult', data => {
});
```
+
+## call.on('audioDeviceChange')10+
+
+on\(type: 'audioDeviceChange', callback: Callback\\): void
+
+订阅通话音频设备切换事件。使用callback异步回调。
+
+**系统接口:** 此接口为系统接口。
+
+**需要权限**:ohos.permission.SET_TELEPHONY_STATE
+
+**系统能力**:SystemCapability.Telephony.CallManager
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| -------- | ----------------------------------------------- | ---- | --------------------------------------------------- |
+| type | string | 是 | 通话音频设备发生变化,参数固定为'audioDeviceChange'。 |
+| callback | Callback<[AudioDeviceInfo](#audiodeviceinfo10)> | 是 | 回调函数。 |
+
+**错误码:**
+
+以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。
+
+| 错误码ID | 错误信息 |
+| -------- | -------------------------------------------- |
+| 201 | Permission denied. |
+| 202 | Non-system applications use system APIs. |
+| 401 | Parameter error. |
+| 8300001 | Invalid parameter value. |
+| 8300002 | Operation failed. Cannot connect to service. |
+| 8300003 | System internal error. |
+| 8300999 | Unknown error code. |
+
+**示例:**
+
+```js
+call.on('audioDeviceChange', data => {
+ console.log(`callback: data->${JSON.stringify(data)}`);
+});
+```
+
+
+## call.off('audioDeviceChange')10+
+
+off\(type: 'audioDeviceChange', callback?: Callback\\): void
+
+取消订阅audioDeviceChange事件。使用callback异步回调。
+
+**系统接口:** 此接口为系统接口。
+
+**需要权限**:ohos.permission.SET_TELEPHONY_STATE
+
+**系统能力**:SystemCapability.Telephony.CallManager
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| -------- | ---------------------------------------------------------- | ---- | --------------------------------------------------- |
+| type | string | 是 | 通话音频设备发生变化,参数固定为'audioDeviceChange'。 |
+| callback | Callback<[AudioDeviceInfo](#audiodeviceinfo10)> | 否 | 回调函数。不填该参数将不会收到取消订阅的处理结果。 |
+
+**错误码:**
+
+以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。
+
+| 错误码ID | 错误信息 |
+| -------- | -------------------------------------------- |
+| 201 | Permission denied. |
+| 202 | Non-system applications use system APIs. |
+| 401 | Parameter error. |
+| 8300001 | Invalid parameter value. |
+| 8300002 | Operation failed. Cannot connect to service. |
+| 8300003 | System internal error. |
+| 8300999 | Unknown error code. |
+
+**示例:**
+
+```js
+call.off('audioDeviceChange', data => {
+ console.log(`callback: data->${JSON.stringify(data)}`);
+});
+```
+
+
## call.isNewCallAllowed8+
isNewCallAllowed\(callback: AsyncCallback\\): void
@@ -4062,6 +4147,472 @@ promise.then(data => {
});
```
+
+## call.closeUnfinishedUssd10+
+
+closeUnfinishedUssd\(slotId: number, callback: AsyncCallback\\): void
+
+取消未激活完成的非结构化补充数据业务。使用callback异步回调。
+
+**系统接口:** 此接口为系统接口。
+
+**需要权限**:ohos.permission.SET_TELEPHONY_STATE
+
+**系统能力**:SystemCapability.Telephony.CallManager
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| -------- | ------------------------- | ---- | -------------------------------------- |
+| slotId | number | 是 | 卡槽ID。
- 0:卡槽1
- 1:卡槽2 |
+| callback | AsyncCallback<void> | 是 | 回调函数。 |
+
+**错误码:**
+
+以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。
+
+| 错误码ID | 错误信息 |
+| -------- | -------------------------------------------- |
+| 201 | Permission denied. |
+| 202 | Non-system applications use system APIs. |
+| 401 | Parameter error. |
+| 8300001 | Invalid parameter value. |
+| 8300002 | Operation failed. Cannot connect to service. |
+| 8300003 | System internal error. |
+| 8300999 | Unknown error code. |
+
+**示例:**
+
+```js
+let slotId = 0;
+call.closeUnfinishedUssd(slotId, (err) => {
+ console.log(`callback: err->${JSON.stringify(err)}`);
+});
+```
+
+## call.closeUnfinishedUssd10+
+
+closeUnfinishedUssd\(slotId: number\): Promise\
+
+取消未激活完成的非结构化补充数据业务。使用Promise异步回调。
+
+**系统接口:** 此接口为系统接口。
+
+**需要权限**:ohos.permission.SET_TELEPHONY_STATE
+
+**系统能力**:SystemCapability.Telephony.CallManager
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ------ | ------ | ---- | -------------------------------------- |
+| slotId | number | 是 | 卡槽ID。
- 0:卡槽1
- 1:卡槽2 |
+
+**返回值:**
+
+| 类型 | 说明 |
+| ------------------- | --------------------------- |
+| Promise<void> | 以Promise形式异步返回结果。 |
+
+**错误码:**
+
+以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。
+
+| 错误码ID | 错误信息 |
+| -------- | -------------------------------------------- |
+| 201 | Permission denied. |
+| 202 | Non-system applications use system APIs. |
+| 401 | Parameter error. |
+| 8300001 | Invalid parameter value. |
+| 8300002 | Operation failed. Cannot connect to service. |
+| 8300003 | System internal error. |
+| 8300999 | Unknown error code. |
+
+**示例:**
+
+```js
+let slotId = 0;
+call.closeUnfinishedUssd(slotId).then(() => {
+ console.log(`closeUnfinishedUssd success.`);
+}).catch((err) => {
+ console.error(`closeUnfinishedUssd fail, promise: err->${JSON.stringify(err)}`);
+});
+```
+
+
+## call.setVoNRState10+
+
+setVoNRState\(slotId: number, state: VoNRState, callback: AsyncCallback\\): void
+
+设置NR语音的开关状态。使用callback异步回调。
+
+**系统接口:** 此接口为系统接口。
+
+**需要权限**:ohos.permission.SET_TELEPHONY_STATE
+
+**系统能力**:SystemCapability.Telephony.CallManager
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ----------- | ----------------------------- | ---- | ---------------------------------------------------- |
+| slotId | number | 是 | 卡槽ID。
- 0:卡槽1
- 1:卡槽2 |
+| state | [VoNRState](#vonrstate10) | 是 | 开关状态。 |
+| callback | AsyncCallback<boolean> | 是 | 回调函数。返回true表示设置成功,返回false表示设置失败。 |
+
+**错误码:**
+
+以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。
+
+| 错误码ID | 错误信息 |
+| -------- | -------------------------------------------- |
+| 201 | Permission denied. |
+| 202 | Non-system applications use system APIs. |
+| 401 | Parameter error. |
+| 8300001 | Invalid parameter value. |
+| 8300002 | Operation failed. Cannot connect to service. |
+| 8300003 | System internal error. |
+| 8300999 | Unknown error code. |
+
+**示例:**
+
+```js
+let slotId = 0;
+let state = 1;
+call.setVoNRState(slotId, state, (err, data) => {
+ console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
+});
+```
+
+
+## call.setVoNRState10+
+
+setVoNRState\(slotId: number, state: VoNRState\): Promise\
+
+设置NR语音的开关状态。使用Promise异步回调。
+
+**系统接口:** 此接口为系统接口。
+
+**需要权限**:ohos.permission.SET_TELEPHONY_STATE
+
+**系统能力**:SystemCapability.Telephony.CallManager
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ----------- | ----------------------------- | ---- | ------------------------------------------- |
+| slotId | number | 是 | 卡槽ID。
- 0:卡槽1
- 1:卡槽2。 |
+| state | [VoNRState](#vonrstate10) | 是 | 开关状态。 |
+
+**返回值:**
+
+| 类型 | 说明 |
+| ---------------------- | --------------------------------------------- |
+| Promise<boolean> | 以Promise形式异步返回开关状态是否设置成功。 |
+
+**错误码:**
+
+以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。
+
+| 错误码ID | 错误信息 |
+| -------- | -------------------------------------------- |
+| 201 | Permission denied. |
+| 202 | Non-system applications use system APIs. |
+| 401 | Parameter error. |
+| 8300001 | Invalid parameter value. |
+| 8300002 | Operation failed. Cannot connect to service. |
+| 8300003 | System internal error. |
+| 8300999 | Unknown error code. |
+
+**示例:**
+
+```js
+let slotId = 0;
+let state = 1;
+call.setVoNRState(slotId, state).then(() => {
+ console.log(`setVoNRState success, promise: data->${JSON.stringify(data)}`);
+}).catch((err) => {
+ console.error(`setVoNRState fail, promise: err->${JSON.stringify(err)}`);
+});
+```
+
+
+## call.getVoNRState10+
+
+getVoNRState\(slotId: number, callback: AsyncCallback\\): void
+
+查询NR语音的开关状态。使用callback异步回调。
+
+**系统接口:** 此接口为系统接口。
+
+**需要权限**:ohos.permission.GET_TELEPHONY_STATE
+
+**系统能力**:SystemCapability.Telephony.CallManager
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ----------- | --------------------------------------------- | ---- | ------------------------------------------------------ |
+| slotId | number | 是 | 卡槽ID。
- 0:卡槽1
- 1:卡槽2 |
+| callback | AsyncCallback<[VoNRState](#vonrstate10)>| 是 | 回调函数。返回NR语音开关的状态。 |
+
+**错误码:**
+
+以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。
+
+| 错误码ID | 错误信息 |
+| -------- | -------------------------------------------- |
+| 201 | Permission denied. |
+| 202 | Non-system applications use system APIs. |
+| 401 | Parameter error. |
+| 8300001 | Invalid parameter value. |
+| 8300002 | Operation failed. Cannot connect to service. |
+| 8300003 | System internal error. |
+| 8300999 | Unknown error code. |
+
+**示例:**
+
+```js
+let slotId = 0;
+call.getVoNRState(slotId, (err, data) => {
+ console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
+});
+```
+
+
+## call.getVoNRState10+
+
+getVoNRState\(slotId: number\): Promise\
+
+查询NR语音的开关状态。使用Promise异步回调。
+
+**系统接口:** 此接口为系统接口。
+
+**需要权限**:ohos.permission.GET_TELEPHONY_STATE
+
+**系统能力**:SystemCapability.Telephony.CallManager
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ----------- | ----------------------------- | ---- | ------------------------------------------- |
+| slotId | number | 是 | 卡槽ID。
- 0:卡槽1
- 1:卡槽2。 |
+
+**返回值:**
+
+| 类型 | 说明 |
+| ---------------------------------------- | ------------------------------------------- |
+| Promise<[VoNRState](#vonrstate10)> | 以Promise形式异步返回开关状态。 |
+
+**错误码:**
+
+以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。
+
+| 错误码ID | 错误信息 |
+| -------- | -------------------------------------------- |
+| 201 | Permission denied. |
+| 202 | Non-system applications use system APIs. |
+| 401 | Parameter error. |
+| 8300001 | Invalid parameter value. |
+| 8300002 | Operation failed. Cannot connect to service. |
+| 8300003 | System internal error. |
+| 8300999 | Unknown error code. |
+
+**示例:**
+
+```js
+let slotId = 0;
+let promise = call.getVoNRState(slotId);
+promise.then(data => {
+ console.log(`getVoNRState success, promise: data->${JSON.stringify(data)}`);
+}).catch(err => {
+ console.error(`getVoNRState fail, promise: err->${JSON.stringify(err)}`);
+});
+```
+
+
+## call.canSetCallTransferTime10+
+
+canSetCallTransferTime\(slotId: number, callback: AsyncCallback\\): void
+
+检查是否可以设置呼叫转移时间。使用callback异步回调。
+
+**系统接口:** 此接口为系统接口。
+
+**需要权限**:ohos.permission.GET_TELEPHONY_STATE
+
+**系统能力**:SystemCapability.Telephony.CallManager
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ----------- | ----------------------------- | ---- | ----------------------------------------------------- |
+| slotId | number | 是 | 卡槽ID。
- 0:卡槽1
- 1:卡槽2 |
+| callback | AsyncCallback<boolean> | 是 | 回调函数。返回true表示可以设置,返回false表示不可以设置。|
+
+**错误码:**
+
+以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。
+
+| 错误码ID | 错误信息 |
+| -------- | -------------------------------------------- |
+| 201 | Permission denied. |
+| 202 | Non-system applications use system APIs. |
+| 401 | Parameter error. |
+| 8300001 | Invalid parameter value. |
+| 8300002 | Operation failed. Cannot connect to service. |
+| 8300003 | System internal error. |
+| 8300999 | Unknown error code. |
+
+**示例:**
+
+```js
+let slotId = 0;
+call.canSetCallTransferTime(slotId, (err, data) => {
+ console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
+});
+```
+
+
+## call.canSetCallTransferTime10+
+
+canSetCallTransferTime\(slotId: number\): Promise\
+
+检查是否可以设置呼叫转移时间。使用Promise异步回调。
+
+**系统接口:** 此接口为系统接口。
+
+**需要权限**:ohos.permission.GET_TELEPHONY_STATE
+
+**系统能力**:SystemCapability.Telephony.CallManager
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ----------- | ----------------------------- | ---- | ------------------------------------------- |
+| slotId | number | 是 | 卡槽ID。
- 0:卡槽1
- 1:卡槽2。 |
+
+**返回值:**
+
+| 类型 | 说明 |
+| ---------------------- | --------------------------------------------- |
+| Promise<boolean> | 以Promise形式异步返回是否可以设置呼叫转移时间。 |
+
+**错误码:**
+
+以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。
+
+| 错误码ID | 错误信息 |
+| -------- | -------------------------------------------- |
+| 201 | Permission denied. |
+| 202 | Non-system applications use system APIs. |
+| 401 | Parameter error. |
+| 8300001 | Invalid parameter value. |
+| 8300002 | Operation failed. Cannot connect to service. |
+| 8300003 | System internal error. |
+| 8300999 | Unknown error code. |
+
+**示例:**
+
+```js
+let slotId = 0;
+call.canSetCallTransferTime(slotId).then(() => {
+ console.log(`canSetCallTransferTime success, promise: data->${JSON.stringify(data)}`);
+}).catch((err) => {
+ console.error(`canSetCallTransferTime fail, promise: err->${JSON.stringify(err)}`);
+});
+```
+
+
+## call.inputDialerSpecialCode10+
+
+inputDialerSpecialCode\(inputCode: string, callback: AsyncCallback\\): void
+
+暗码广播。使用callback异步回调。
+
+**系统接口:** 此接口为系统接口。
+
+**需要权限**:ohos.permission.PLACE_CALL
+
+**系统能力**:SystemCapability.Telephony.CallManager
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ----------- | ---------------------------- | ---- | ----------------------------------------- |
+| inputCode | string | 是 | 暗码。支持暗码字段, 如:2846579(工程菜单)。 |
+| callback | AsyncCallback<void> | 是 | 回调函数 |
+
+**错误码:**
+
+以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。
+
+| 错误码ID | 错误信息 |
+| -------- | -------------------------------------------- |
+| 201 | Permission denied. |
+| 202 | Non-system applications use system APIs. |
+| 401 | Parameter error. |
+| 8300001 | Invalid parameter value. |
+| 8300002 | Operation failed. Cannot connect to service. |
+| 8300003 | System internal error. |
+
+**示例:**
+
+```js
+call.inputDialerSpecialCode('2846579', (err) => {
+ console.log(`callback: err->${JSON.stringify(err)}`);
+});
+```
+
+## call.inputDialerSpecialCode10+
+
+inputDialerSpecialCode\(inputCode: string\): Promise\
+
+暗码广播。使用Promise异步回调。
+
+**系统接口:** 此接口为系统接口。
+
+**需要权限**:ohos.permission.PLACE_CALL
+
+**系统能力**:SystemCapability.Telephony.CallManager
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ----------- | ---------------------------- | ---- | ----------------------------------------- |
+| inputCode | string | 是 | 暗码。支持暗码字段, 如:2846579(工程菜单)。 |
+
+**返回值:**
+
+| 类型 | 说明 |
+| ------------------- | --------------------------- |
+| Promise<void> | 以Promise形式异步返回结果。 |
+
+**错误码:**
+
+以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)。
+
+| 错误码ID | 错误信息 |
+| -------- | -------------------------------------------- |
+| 201 | Permission denied. |
+| 202 | Non-system applications use system APIs. |
+| 401 | Parameter error. |
+| 8300001 | Invalid parameter value. |
+| 8300002 | Operation failed. Cannot connect to service. |
+| 8300003 | System internal error. |
+
+**示例:**
+
+```js
+try {
+ call.inputDialerSpecialCode('2846579');
+ console.log(`inputDialerSpecialCode success`);
+} catch (error) {
+ console.log(`inputDialerSpecialCode fail, promise: err->${JSON.stringify(error)}`);
+}
+```
+
+
## DialOptions
拨打电话的可选参数。
@@ -4071,23 +4622,25 @@ promise.then(data => {
| 名称 | 类型 | 必填 | 说明 |
| ------------------------ | ---------------------------------- | ---- | ----------------------------------------------------------------------------------------------- |
| extras | boolean | 否 | 根据extras的值判断是否为视频通话,默认为语音通话。
- true:视频通话。
- false:语音通话。 |
-| accountId 8+ | number | 否 | 帐户Id。
- 0:卡槽1
- 1:卡槽2
。 |
-| videoState 8+ | [VideoStateType](#videostatetype7) | 否 | 视频状态类型。 |
-| dialScene 8+ | [DialScene](#dialscene8) | 否 | 拨号场景。 |
-| dialType 8+ | [DialType](#dialtype8) | 否 | 拨号类型。 |
+| accountId 8+ | number | 否 | 帐户Id。
- 0:卡槽1
- 1:卡槽2
。此接口为系统接口。 |
+| videoState 8+ | [VideoStateType](#videostatetype7) | 否 | 视频状态类型。此接口为系统接口。 |
+| dialScene 8+ | [DialScene](#dialscene8) | 否 | 拨号场景。此接口为系统接口。 |
+| dialType 8+ | [DialType](#dialtype8) | 否 | 拨号类型。此接口为系统接口。 |
## DialCallOptions9+
拨打电话的可选参数。
+**系统接口:** 此接口为系统接口。
+
**系统能力**:SystemCapability.Telephony.CallManager
-| 名称 | 类型 | 必填 | 说明 |
-| ------------------------ | ---------------------------------- | ---- | ------------------------------------------------------------ |
-| accountId 9+ | number | 否 | 帐户Id。
- 0:卡槽1
- 1:卡槽2
此接口为系统接口。|
-| videoState 9+ | [VideoStateType](#videostatetype7) | 否 | 视频状态类型。此接口为系统接口。 |
-| dialScene 9+ | [DialScene](#dialscene8) | 否 | 拨号场景。此接口为系统接口。 |
-| dialType 9+ | [DialType](#dialtype8) | 否 | 拨号类型。此接口为系统接口。 |
+| 名称 | 类型 | 必填 | 说明 |
+| ------------------------ | ---------------------------------- | ---- | ------------------------------------------- |
+| accountId 9+ | number | 否 | 帐户Id。
- 0:卡槽1
- 1:卡槽2
。|
+| videoState 9+ | [VideoStateType](#videostatetype7) | 否 | 视频状态类型。 |
+| dialScene 9+ | [DialScene](#dialscene8) | 否 | 拨号场景。 |
+| dialType 9+ | [DialType](#dialtype8) | 否 | 拨号类型。 |
## CallState
@@ -4138,6 +4691,19 @@ IP多媒体系统调用模式。
| CALL_MODE_SEND_RECEIVE | 3 | 允许发送和接收呼叫 |
| CALL_MODE_VIDEO_PAUSED | 4 | 暂停视频呼叫 |
+## VoNRState10+
+
+5G语音开关状态。
+
+**系统接口:** 此接口为系统接口。
+
+**系统能力**:SystemCapability.Telephony.CallManager
+
+| 名称 | 值 | 说明 |
+| ---------------------- | ---- | ----------------- |
+| VONR_STATE_OFF | 0 | 关闭状态 |
+| VONR_STATE_ON | 1 | 打开状态 |
+
## AudioDevice8+
音频设备。
@@ -4154,6 +4720,36 @@ IP多媒体系统调用模式。
| DEVICE_BLUETOOTH_SCO | 3 | 蓝牙SCO设备 |
| DEVICE_MIC | 4 | 麦克风设备 |
+## AudioDeviceType10+
+
+音频设备类型。
+
+**系统接口:** 此接口为系统接口。
+
+**系统能力**:SystemCapability.Telephony.CallManager
+
+| 名称 | 值 | 说明 |
+| -------------------- | ---- | ----------- |
+| DEVICE_EARPIECE | 0 | 耳机设备 |
+| DEVICE_SPEAKER | 1 | 扬声器设备 |
+| DEVICE_WIRED_HEADSET | 2 | 有线耳机设备 |
+| DEVICE_BLUETOOTH_SCO | 3 | 蓝牙SCO设备 |
+
+## AudioDeviceInfo10+
+
+音频设备信息。
+
+**系统接口:** 此接口为系统接口。
+
+**系统能力**:SystemCapability.Telephony.CallManager
+
+| 名称 | 类型 | 必填 | 说明 |
+| --------------------------------- | ------------------------------------- | ---- | ---------------- |
+| audioDeviceList 10+ | [Array\](#audiodevice8) | 是 | 音频设备列表。 |
+| currentAudioDevice 10+ | [AudioDevice](#audiodevice8) | 是 | 音频设备类型。 |
+| isMuted 10+ | boolean | 是 | 是否静音。 |
+
+
## CallRestrictionType8+
呼叫限制类型。