You need to enable JavaScript to run this app. TypeScript如何让deploy函数根据传入函数自动推导后续参数类型
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript如何让deploy函数根据传入函数自动推导后续参数类型

需求实现方案

该需求完全可以通过 TypeScript 泛型 + 内置工具类型实现,具体实现方式如下:

实现思路

  • 定义泛型参数 T 约束为任意函数类型,用于承接传入的第一个参数
  • 通过 TypeScript 内置工具类型 Parameters<T> 提取函数 T 的入参类型元组,作为后续剩余参数的类型约束
  • 若需要返回传入函数的执行结果,可搭配 ReturnType<T> 定义返回值类型

调整后完整代码

const alpha = (a: string, b:string) => {};
const beta = (a: number, b:number) => {};

// 泛型T约束为任意函数类型
export const deploy = async <T extends (...args: any[]) => any>(
  toDeployContract: T,
  // 剩余参数自动匹配传入函数的入参类型
  ...args: Parameters<T>
): Promise<void> => {
  // 此处可补充你的业务逻辑,示例为直接执行传入的函数
  toDeployContract(...args);
}

调用验证

调整后两种调用方式均可正常通过类型校验:

  • 传入 alpha 时:deploy(alpha, "hello", "world"); 后续参数会自动校验为 string 类型
  • 传入 beta 时:deploy(beta, 1, 2); 后续参数会自动校验为 number 类型
    如果参数类型不匹配,TypeScript 会在编码阶段直接抛出类型错误提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 17:06:05