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

调用TypeScript泛型函数时如何强制要求显式传入类型参数

实现方案

你可以通过给泛型设置默认never类型结合条件类型约束的方式满足需求,修改后的函数定义如下:

function example<T = never>(...args: T extends never ? [never] : any[]): Partial<T> {
    // 函数原有实现逻辑保持不变
    return {} as Partial<T>
}

实现原理

  • 给泛型T设置默认值为never,当调用时没有显式传入类型参数时,T会自动使用默认值never
  • 函数参数通过条件类型判断:当T为never时,参数被限定为[never]类型,而never类型不接受任何实际值传入,调用时会直接触发编译错误
  • 当显式传入类型参数时,T不再匹配never,参数类型会恢复为可传入任意值的any[](你可以根据实际业务需求替换此处的any[]为你需要的实际参数类型)

效果验证

const inputArgs = []

// 未显式传类型参数,触发编译错误:类型“undefined[]”的参数不能赋给类型“never”的参数
example(...inputArgs)

interface User {
    name: string
    age: number
}
// 显式指定类型参数,无编译错误,返回值类型为 Partial<User>
example<User>(...inputArgs)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:06:03