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

TypeScript中如何让泛型类型根据属性类型自动推断泛型参数?

解决方案:通过泛型工厂函数实现自动类型推断

直接写let newFooToo: Foo = ...是行不通的,因为TypeScript的泛型类型别名在作为类型注解时,必须显式传入泛型参数,无法自动从对象字面量中推导T的类型。

要实现你想要的自动推断效果,最常用的方案是定义一个泛型工厂函数,利用TypeScript的泛型参数推断机制来自动推导T:

type Foo<T> = {
    propertyA: T[],
    propertyB: number,
    functionA: (a: T) => void
}

// 定义泛型工厂函数
function createFoo<T>(foo: Foo<T>): Foo<T> {
  return foo;
}

// 使用示例
let fooArray: string[] = ['one','two','three']

// 无需显式声明T,TS会自动从propertyA推断出T为string
const newFooToo = createFoo({
    propertyA: fooArray,
    propertyB: 10,
    functionA: (a) => {
        console.log(a) // 此处a会被自动推断为string,支持智能提示
    } 
})

这个方案的核心是:当你将对象传递给工厂函数的参数时,TypeScript会根据propertyA的类型自动推导出泛型参数T,同时functionA的参数类型会同步被约束,完美满足你想要的智能提示需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 18:22:36