TypeScript中调用返回联合类型的函数时如何指定具体返回类型
TypeScript 中指定
getFilters调用返回类型的解决方案 你可以根据场景选择以下三种实现方式:
- 方式1:类型断言(最便捷,适合你100%确认返回类型的场景)
直接在调用后使用as关键字强制声明类型即可:
const filters = getFilters() as IListFilteringTypeMultiSelect;
- 方式2:类型守卫校验(最安全,避免运行时类型不匹配问题)
先定义类型判断函数,TypeScript会自动在判断分支内收窄类型:
// 定义类型守卫 function isMultiSelect(val: IListFilteringType): val is IListFilteringTypeMultiSelect { return Array.isArray(val); } const rawFilters = getFilters(); if (isMultiSelect(rawFilters)) { // 该作用域内 rawFilters 自动识别为 IListFilteringTypeMultiSelect 类型 const filters = rawFilters; }
- 方式3:泛型重载方法(适合该方法经常需要指定不同返回类型的复用场景)
先修改getFilters的类型定义,增加泛型支持:
// 给方法增加泛型参数,默认值保持原有的IListFilteringType function getFilters<T extends IListFilteringType = IListFilteringType>(): T { // 原有方法实现 } // 调用时指定泛型即可 const filters = getFilters<IListFilteringTypeMultiSelect>();
内容的提问来源于stack exchange,提问作者Jon_B
相关产品推荐
相关产品推荐

