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

如何定义与另一函数参数完全一致的TypeScript函数类型?

如何定义与另一个函数参数完全相同的TypeScript函数类型

原始TypeScript声明

interface Options {
  debug?: boolean;
}

declare function copy(text: string, options?: Options): boolean;

现有写法的痛点

之前用Parameters工具类型逐个提取参数的写法需要重复引用Parameters<typeof copy>,冗余且不便维护:

const copy2 = (
    text: Parameters<typeof copy>[0], 
    options: Parameters<typeof copy>[1]
) => { }

简洁解决方案

以下几种方式可以避免重复,直接复用原函数的参数(甚至完整类型):

  • 直接复用原函数的完整类型
    直接用typeof copy提取原函数的类型签名,直接赋值给新函数:

    const copy2: typeof copy = (text, options) => {
      // 自定义实现逻辑
      if (options?.debug) {
        console.log(`正在复制: ${text}`);
      }
      return true;
    };
    

    这种方式会完整继承原函数的参数类型、可选性以及返回值类型。

  • 用元组展开简化参数定义
    结合Parameters工具类型和元组展开运算符...,一次性接收所有参数:

    const copy2 = (...args: Parameters<typeof copy>) => {
      const [text, options] = args;
      // 自定义实现逻辑
      return true;
    };
    

    这种写法无需逐个声明参数,自动保留原函数的可选参数特性,参数数量或类型变化时会自动同步。

  • 单独定义复用的函数类型
    如果需要多次复用该函数类型,可以先提取为单独的类型别名:

    // 提取copy的函数类型
    type CopyFunction = typeof copy;
    
    // 使用该类型定义新函数
    const copy2: CopyFunction = (text, options) => {
      // 自定义实现逻辑
      return true;
    };
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 16:22:50