当我使用函数时,我遇到 Typescript 类型检查问题。假设我有一个 TypeIBaseField和一个 Type 变量Array<IBaseField>。当我想为该变量分配一个值时,我将检查null并undefined根据函数结果分配一个空数组或一个新值。但是打字稿显示错误,当我在函数中检查它时,类型IBaseField[] | undefined 不可分配给类型。IBaseField[]这是我尝试过的代码:
public constructor(formId:ID, autoFillFields?: Array<IBaseField>) {
this._formId = formId
this._autoFillFields = isNullOrUndefined(autoFillFields) ? [] : autoFillFields
}
Run Code Online (Sandbox Code Playgroud)
这是我的isNullOrUndefined功能:
export function isNullOrUndefined(obj: any) {
return obj === null || obj === undefined
}
Run Code Online (Sandbox Code Playgroud)
以及打字稿显示的错误:
输入 'IBaseField[] | undefined' 不可分配给类型'IBaseField[]'。类型“未定义”不可分配给类型“IBaseField[]”.ts(2322)
小智 5
你需要告诉 typescript 这isNullOrUndefined是一个类型保护:
export function isNullOrUndefined(obj: any): obj is null | undefined {
return obj === null || obj === undefined
}
Run Code Online (Sandbox Code Playgroud)
https://www.typescriptlang.org/docs/handbook/advanced-types.html#user-defined-type-guards
| 归档时间: |
|
| 查看次数: |
1144 次 |
| 最近记录: |