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

如何实现泛型指定时参数必填、未指定时可选的TS函数

实现满足条件的TypeScript函数

可以通过函数重载来实现这个需求,定义两个不同的函数签名分别对应"未指定泛型"和"指定泛型"的场景:

// 重载1:未显式指定泛型时,参数arg可选
function TT(): void;
// 重载2:显式指定泛型O时,参数arg为必填的O类型
function TT<O>(arg: O): void;
// 函数实现体
function TT<O = unknown>(arg?: O): void {
  // 这里写你的函数逻辑
}

验证效果

  • TT() // 合法,匹配第一个重载签名
  • TT<string>("hello") // 合法,匹配第二个重载签名
  • TT<string>() // TypeScript报错,因为第二个重载要求必须传入arg参数

原理说明

函数重载会根据调用时的泛型指定情况和参数传入情况,自动匹配对应的签名:

  • 当不指定泛型时,TypeScript会匹配第一个重载,允许不传参数;
  • 当显式指定泛型O时,TypeScript会优先匹配第二个重载,该签名强制要求传入类型为O的参数。

内容的提问来源于stack exchange,提问作者Islam Y-

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 14:12:03