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

如何从对象字面量中f1的返回类型推断f2的参数类型?

实现从f1返回值推断f2参数类型的方案

你当前的写法里,直接给变量a标注A类型时,TypeScript会直接使用泛型R的默认值any,不会从f1的返回值反向推导R的类型,所以f2的参数x会是any。要实现自动推断,最简洁的方案是用辅助推断函数,利用TypeScript对函数参数的泛型推导能力:

type A<R = any> = {
    f1: () => R
    f2: (x: R) => void
}

// 辅助函数,让TS自动推断泛型R
const createA = <R>(obj: A<R>) => obj;

// 使用辅助函数,无需显式指定A<string>
const a = createA({
    f1: () => "",
    f2: (x) => {} // x被自动推断为string类型
});

原理说明

当调用createA时,TypeScript会分析传入对象中f1的返回值类型,自动确定泛型R的类型,进而让f2的参数x同步匹配该类型。而直接给变量标注A类型的方式,TS会先锁定R为默认的any,不会再从对象属性反向推导,所以无法实现你要的效果。

如果不想额外定义辅助函数,目前TypeScript没有原生支持在变量类型注解场景下反向推导泛型参数的语法,因此辅助函数是最直接可行的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 04:22:11