如何在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
相关产品推荐
相关产品推荐

