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

TypeScript如何定义满足两种互斥函数签名的回调类型?

TypeScript 类型编码回调函数的参数规则

我最近在用一个第三方库,它对回调函数的参数有个挺严格的要求:要么只传一个Error类型的错误作为第一个参数,要么第一个参数传undefined,同时第二个参数传string类型的值。简单说就是不能同时传错误和有效值,也不能啥都不传。

为了让TypeScript帮我自动校验这个规则,避免写出不符合要求的调用代码,我用重载类型定义了这个回调:

type Callback = { 
  (error: undefined, value: string): void; 
  (error: Error): void; 
}

function doThings(c: Callback) {
  // 合法:无错误,传入有效数值
  c(undefined, '1');
  
  // 下面这些写法都会被TypeScript报错:
  // c(new Error('出错了'), '无效值'); // 同时传错误和值,不合法
  // c(undefined); // 只传undefined,没传值,不合法
  // c(); // 啥都不传,不合法
}

这样定义之后,只要调用回调时不符合规则,TypeScript就会立刻给出提示,帮我提前规避不符合第三方库要求的写法,太省心了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:18:27