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

泛型函数参数与返回类型不同时的类型签名定义问题

如何定义参数与返回类型不同的函数参数类型签名?

你遇到的错误根源在于把函数参数funct2定义成了泛型函数——这意味着funct2需要支持任意的输入类型T和返回类型K,但你传入的convertFromDate是固定输入Date、输出number的非泛型函数,两者类型不匹配。

正确的做法是将funct1本身定义为泛型函数,让泛型参数T和K由传入的funct2自动推导,而非要求funct2自己是泛型函数。

修正后的代码示例

首先修改funct1的类型定义:

const funct1 = <T, K>(obj1: Object, funct2: (a: T) => K, obj2: any) => {
    // 你的业务逻辑
};

然后调用时,TypeScript会自动根据convertFromDate的类型推导T=Date、K=number,不会再报错:

const convertFromDate = (obj: Date): number => {
  return obj.valueOf() / 1000;
};

// 正常调用,无类型错误
funct1(d1, convertFromDate, Date);

进阶优化(可选)

如果obj2和T存在关联(比如obj2是T的构造函数),可以进一步约束类型,让定义更严谨:

const funct1 = <T, K>(obj1: Object, funct2: (a: T) => K, obj2: new () => T) => {
    // 此时obj2被限制为T的构造函数,避免传入无关类型
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:48:26