在TypeScript声明文件(.d.ts
)中声明类时,可以像这样向其添加函数:
declare class Foo {
myFunction (arg1: number, arg2: string): void;
}
但是,如果要在另一个类中使用具有相同签名的函数,该怎么办?您当然可以只复制并粘贴该行,但也可以使用type
对其进行定义并多次重复使用该类型:
declare class Foo {
myFunction: MyFunctionFn;
}
declare class Bar {
myFunction: MyFunctionFn;
}
type MyFunctionFn = (arg1: number, arg2: string) => void;
问题在于VS Code和其他编辑器在自动完成期间如何呈现功能。以下是显示以下声明的示例:
declare class Foo {
sharedFn: SharedFn;
inlineFn (arg1: number, arg2: string): void;
}
type SharedFn = (arg1: number, arg2: string) => void;
如您所见,inlineFn
被正确显示为方法,而sharedFn
被显示为属性(在这种情况下,恰好被分配了一个函数值)。 / p>
TypeScript中是否可以将其显示为适当的方法,但仍与其他类共享函数签名?
答案 0 :(得分:1)
没有适合您的完美解决方案。这是一个中间的解决方案,它比键入所有参数本身的重复性要小,但不如所需的方法注释好>
type MyFunctionFn = (arg1: number, arg2: string) => void;
declare class Foo {
myFunction(...args: Parameters<MyFunctionFn>): ReturnType<MyFunctionFn>;
}
declare class Bar {
myFunction(...args: Parameters<MyFunctionFn>): ReturnType<MyFunctionFn>;
}
有关更多详细信息,请参见this answer。
答案 1 :(得分:0)