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

如何让TypeScript函数根据不同输入返回对应类型?

解决方案:让TypeScript函数根据输入布尔值自动推断返回类型

你需要的是让函数的返回类型和输入的布尔字面量建立关联,而不是用宽泛的联合类型。这里有两种常用的实现方式:

方法一:函数重载

通过定义多个重载签名,明确指定不同输入对应的返回类型:

// 重载签名:明确输入true/false对应的返回类型
function example(input: true): string;
function example(input: false): number;

// 实现签名:内部用联合类型兼容两种情况
function example(input: boolean): string | number {
  return input ? "string" : 0;
}

调用时TS会自动推断类型:

const str = example(true); // str 类型自动为 string
const num = example(false); // num 类型自动为 number

这种方式直观易懂,适合输入是明确的true/false字面量的场景。

方法二:条件类型(泛型)

利用TypeScript的条件类型,通过泛型动态推导返回类型:

function example<T extends boolean>(input: T): T extends true ? string : number {
  // 这里用as any避免实现时的类型报错,TS暂时无法自动匹配条件类型的返回
  return input ? "string" : 0 as any;
}

效果和重载一致,而且支持更灵活的泛型场景。如果输入是一个布尔类型的变量(不是字面量),会返回联合类型;如果是字面量true/false,则精确推断:

const flag = Math.random() > 0.5;
const result = example(flag); // result 类型为 string | number

const str = example(true); // str 类型为 string

两种方法都能解决你需要的“自动识别返回类型”的需求,不需要再手动做类型检查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:18:25