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

如何合并返回类型依赖参数值的TypeScript方法签名?

TypeScript 动态返回类型的函数合并方案

现有两个TypeScript方法:

function a1(verbose = true): VerbosePayload
function a2(verbose = false): NormalPayload

需求是将这两个方法签名合并为一个,让返回类型根据参数verbose的取值动态变化。尝试过以下两种写法,但均报错:

function a(verbose: boolean): typeof verbose extends true ? VerbosePayload : NormalPayload;
function a<T extends boolean>(verbose: T): T extends true ? VerbosePayload : NormalPayload;

虽然拆分为两个方法是可行方案,但希望找到更优雅的合并方式,在编译时已知verbose值的场景下减少重复代码。最终通过函数重载实现了需求,示例代码如下:

function a(verbose: true): VerbosePayload;
function a(verbose: false): NormalPayload;
function a(verbose: boolean) { ... }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 00:53:09