有一个带有静态函数的函数接口:
interface MyFunction {
(value: string): string;
a: string;
b: string;
}
如何仅Pick
呼叫签名(忽略a
和b
)?
答案 0 :(得分:0)
您不能选择呼叫签名,因为它不是界面的属性。
您可以下一步:
interface MyFunction {
(value: string): string;
a: string;
b: string;
}
type Callable<T> = T extends (...args: any[]) => any ? (...args: Parameters<T>) => ReturnType<T> : never;
type MyFunctionCallSignature = Callable<MyFunction>;
答案 1 :(得分:0)
您不能Pick
,因为您无法传递将选择它的string
键,但是这里构造的类型会推断出您的Function的正确类型:
interface MyFunction {
(value: string): string;
a: string;
b: string;
}
type SignatureType<T> = T extends (...args: infer R) => any ? R : never;
type CallableType<T extends (...args: any[]) => any> = (...args: SignatureType<T>) => ReturnType<T>;
type CallableOfMyFunction = CallableType<MyFunction>; // Type (value: string) => string