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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:54:05