gpt4 book ai didi

Typescript 无法推断函数中的未定义或空检查

转载 作者:行者123 更新时间:2023-12-02 01:46:27 25 4
gpt4 key购买 nike

我在使用函数时遇到 Typescript 类型检查问题。假设我有一个类型 IBaseField我有一个类型为 Array<IBaseField> 的变量。当我想给这个变量赋值时,我将检查 nullundefined我将根据函数结果分配一个空数组或一个新值。但 typescript 显示错误,输入 IBaseField[] | undefined 不可分配给类型 IBaseField[]虽然我已经在函数中检查过它。这是我尝试过的代码:

  public constructor(formId:ID, autoFillFields?: Array<IBaseField>) {
this._formId = formId
this._autoFillFields = isNullOrUndefined(autoFillFields) ? [] : autoFillFields
}

这是我的 isNullOrUndefined功能:

export function isNullOrUndefined(obj: any) {
return obj === null || obj === undefined
}

以及 typescript 显示的错误:

Type 'IBaseField[] | undefined' is not assignable to type'IBaseField[]'. Type 'undefined' is not assignable to type'IBaseField[]'.ts(2322)

最佳答案

您需要告诉 typescript isNullOrUndefined 是类型保护:

export function isNullOrUndefined(obj: any): obj is null | undefined {
return obj === null || obj === undefined
}

https://www.typescriptlang.org/docs/handbook/advanced-types.html#user-defined-type-guards

关于Typescript 无法推断函数中的未定义或空检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70844966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com