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

TypeScript 3.7下如何基于已有类型T生成对应函数值的泛型类型U<T>

实现方案

TS 3.7 原生支持基础映射类型,无需高版本的key重映射特性,直接按如下方式定义即可,仅需传入T一个泛型参数:

type U<T extends object> = {
  [K in keyof T]: (x: T[K]) => T[K]
};

使用验证

针对你给出的I1接口,可直接使用U<I1>得到你预期的类型结构:

interface I1 {
  a: number;
  b: Date;
}

// 示例赋值,类型会自动推导校验
const sample: U<I1> = {
  a: (num) => num * 2, // num自动推导为number,返回值必须为number
  b: (date) => new Date(date.setDate(date.getDate() + 1)) // date自动推导为Date,返回值必须为Date
}

你之前的写法将K、V单独声明为了泛型入参,所以使用时需要手动传入这两个类型参数,把键的遍历逻辑放到映射类型内部处理就可以避免这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:54:05