You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TypeScript中定义函数类型,解决undefined与数组类型不匹配报错

TypeScript类型报错解决方案

报错本质

你遇到的报错是由于实际传入函数的数组参数/内部子过滤函数的返回值可能为undefined,但函数定义的参数仅接受明确的数组类型,不允许undefined值传入。

通用解决方法(推荐)

修改两个函数的参数类型兼容undefined,同时在函数内部做兜底处理,避免空值传递到后续逻辑:

第一个函数修改后代码

export function __filterFilms(crts: [string, string?], arr: IFilmCard[] | undefined) {
    // 空值兜底为空白数组
    const safeFilmArr = arr ?? []
    // 若内部__filterByYear返回值也可能为undefined,可再加一层兜底:
    // const yearFilterRes = __filterByYear(crts[1], safeFilmArr) ?? []
    // return __filterByGenre(crts[0], yearFilterRes)
    return __filterByGenre(crts[0], __filterByYear(crts[1], safeFilmArr))
}

第二个函数修改后代码

export function __filterPersons(crts: [string, string?], arr: IPersonCard[] | undefined) {
    const safePersonArr = arr ?? []
    // 同理如果__filterByYearsPersons返回可能为undefined,也可加兜底
    return __filterByCountry(crts[0], __filterByYearsPersons(crts[1], safePersonArr))
}

可选临时方案(仅适用于你100%确认值一定不为undefined的场景)

如果可以保证调用两个函数时传入的数组参数一定存在,可在调用时使用非空断言运算符!跳过TS检查:

// 调用示例
__filterFilms(crts, yourFilmList!)
__filterPersons(crts, yourPersonList!)

内容的提问来源于stack exchange,提问作者Abduhamid Latipov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 00:54:00