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

如何在外部获取TypeScript函数参数的类型?

获取TypeScript泛型函数的参数类型

你可以通过TypeScript内置的Parameters工具类型提取函数参数类型,结合泛型函数的类型指定来实现需求。你的写法错误在于直接对函数类型使用调用语法,这在类型层面不适用。

正确写法

import { Example, Animal, Mammal } from './not-relevant';

// 直接提取指定泛型参数后的参数类型
type AnimalParam = Parameters<Example['edit']<Animal>>[0];
// AnimalParam 类型即为 Animal | Mammal<Animal>

分步解释

  1. Example['edit'] 获取到接口中edit方法的泛型函数类型:<T extends Animal>(animal: T | Mammal<T>) => void
  2. 给泛型函数指定具体的泛型参数<Animal>,得到实例化后的函数类型:(animal: Animal | Mammal<Animal>) => void
  3. Parameters<FnType> 会提取函数的参数列表为元组类型,这里得到[Animal | Mammal<Animal>]
  4. 取元组的第0个索引,就是目标参数的类型

通用化写法(如需复用泛型)

如果需要针对不同的T类型复用参数类型提取逻辑,可以定义一个泛型类型:

type EditParam<T extends Animal> = Parameters<Example['edit']<T>>[0];

// 使用示例
type DogParam = EditParam<Dog>; // 类型为 Dog | Mammal<Dog>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 17:25:19