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

TypeScript中不手动传入泛型如何保留函数入参的原始类型

TypeScript 泛型函数类型推导优化方案

你不需要手动传入每个参数的typeof作为泛型实参,TypeScript 原生支持泛型参数的自动推导,可以根据传入的实参自动匹配泛型类型,完全不会产生冗余代码。


单参数场景实现

const hello = 'hello' // hello 为字面量类型 'hello'

// 泛型函数定义无需修改
const fnWithGeneric = <T>(x: T) => x

// 调用时省略泛型参数,TS 会自动推导 T 的类型为 'hello'
const result = fnWithGeneric(hello) 
// 此时 result 类型会被正确识别为 'hello'

多参数场景实现

你担心的多参数冗余问题也可以通过自动推导完美解决,不需要手动传入任何泛型参数:

// 多泛型参数的函数定义
const multiFn = <T, U, V>(a: T, b: U, c: V) => {
  return { a, b, c }
}

// 调用时直接传参即可,所有泛型类型都会自动推导
const result = multiFn('hello', 2024, false)
// result 类型自动识别为:{ a: 'hello', b: number, c: boolean }

补充说明

只有当入参无法推导出预期的泛型类型、或者需要强制收窄类型范围时,才需要手动传入泛型实参,日常开发场景下依赖自动推导即可,不会产生冗余代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:24:03