typescript中具有特定泛型类型参数的泛型函数的参数类型



在第三方包中考虑此代码:

// A third-party package
type InternalComplexType<T> = ...; // not exported
export function foo<T>(arg1: T, arg2: InternalComplexType<T>): void {}

例如,我如何获得InternalComplexType<number>

此操作失败:

type SecondArgType = Parameters<typeof foo<number>>[1]; // syntax error

打字游戏场

因此,实现这一点的最佳方法是通过接口函数定义更改函数定义,使其与typescript实用程序类型一起工作。执行typeof func并尝试在typeof中传递泛型目前无法使用typescript编译器。因此出现了错误。

你可以这样做:

type InternalComplexType<T> = T | number;
export function foo<T>(arg1: T, arg2: InternalComplexType<T>): void {}
// create an interface type for you generic function
interface foo<T>{
(arg1: T, arg2: InternalComplexType<T>): T
}
type SecondArgType = Parameters<foo<number>>[1];

最新更新