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

TypeScript如何获取函数返回值类型实现自动推导泛型的管道功能

你当前的泛型定义逻辑本身就支持自动推导,只需要补全函数实现即可正常使用,注意箭头函数泛型后加逗号规避部分TS环境下的JSX语法冲突即可,完整可用实现如下:

type FirstFunc<T> = () => T;
type Pipeline<T> = ((obj: T) => T)[]

const objPipeLine = <T,>(firstFunc: FirstFunc<T>, pipeline: Pipeline<T>): T => {
  let current = firstFunc()
  for (const process of pipeline) {
    current = process(current)
  }
  return current
}

使用时无需手动传入泛型,TS会自动从第一个函数的返回值推断T的类型,并约束Pipeline数组中所有函数的入参、返回值类型必须和T一致:

// 第一个函数返回类型为 { name: string; age: number }
const init = () => ({ name: "李四", age: 18 })

const result = objPipeLine(init, [
  // 此处入参user自动被推导为 { name: string; age: number } 类型
  user => ({ ...user, age: user.age + 2 }),
  user => ({ ...user, name: `${user.name}(已认证)` }),
  // 下面的代码会直接触发TS类型错误,因为返回值多了不存在的gender属性
  // user => ({ ...user, gender: "男" })
])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:54:02