如何合并返回类型依赖参数值的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
相关产品推荐
相关产品推荐

