在第三方包中考虑此代码:
// 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];