如何将成员添加到 flowjs 中的现有定义
How to add members to an existing definition in flowjs
TypeScript 似乎有一个重要的小功能,可以让您向现有接口定义添加成员。在接口中,成员是可加的,因此如果您使用一组成员定义接口,您可以再次定义接口以向接口添加额外的成员。
我有一个预定义的外部 flowjs 定义文件,如下所示:
declare class JQueryStatic {
ajax(url: string, settings?: any): any;
}
declare var jQuery: JQueryStatic;
declare var $: JQueryStatic;
现在想向 class JQueryStatic 添加一个新方法 myPlugin(settings?: any): any;
。
这是以强类型方式支持 jQuery 插件的关键。
在流程中执行此操作的建议方法是什么?
交叉路口类型可能适合您。
type A = { foo: string; };
type B = { bar: string; };
type AB = A & B;
AB 的类型为 { foo: string; bar: string;}
;
来自 https://github.com/Microsoft/TypeScript/issues/1265(参见 "Intersection Type")
关于创建此类声明文件已经存在未决问题:https://github.com/facebook/flow/issues/2421
它还没有受到任何关注,但它可能会(到现在才 5 天)
交叉路口是要走的路。
首先我们需要 jquery 的基本定义,假设它看起来像这样:
// here we declare shape of jquery
declare class $GlobalJquery {
foo(): void
}
// here we declare global reference to jquery
declare var $: $GlobalJquery;
接下来我们需要在某处声明插件的形状:
interface SomeJqueryPlugin {
bar(): void; // plugin adds bar() function to jquery
}
最后,当我们需要使用插件功能时,我们重新声明$
:
declare var $: $GlobalJquery & SomeJqueryPlugin;
$.foo();
$.bar();
TypeScript 似乎有一个重要的小功能,可以让您向现有接口定义添加成员。在接口中,成员是可加的,因此如果您使用一组成员定义接口,您可以再次定义接口以向接口添加额外的成员。
我有一个预定义的外部 flowjs 定义文件,如下所示:
declare class JQueryStatic {
ajax(url: string, settings?: any): any;
}
declare var jQuery: JQueryStatic;
declare var $: JQueryStatic;
现在想向 class JQueryStatic 添加一个新方法 myPlugin(settings?: any): any;
。
这是以强类型方式支持 jQuery 插件的关键。
在流程中执行此操作的建议方法是什么?
交叉路口类型可能适合您。
type A = { foo: string; };
type B = { bar: string; };
type AB = A & B;
AB 的类型为 { foo: string; bar: string;}
;
来自 https://github.com/Microsoft/TypeScript/issues/1265(参见 "Intersection Type")
关于创建此类声明文件已经存在未决问题:https://github.com/facebook/flow/issues/2421
它还没有受到任何关注,但它可能会(到现在才 5 天)
交叉路口是要走的路。
首先我们需要 jquery 的基本定义,假设它看起来像这样:
// here we declare shape of jquery
declare class $GlobalJquery {
foo(): void
}
// here we declare global reference to jquery
declare var $: $GlobalJquery;
接下来我们需要在某处声明插件的形状:
interface SomeJqueryPlugin {
bar(): void; // plugin adds bar() function to jquery
}
最后,当我们需要使用插件功能时,我们重新声明$
:
declare var $: $GlobalJquery & SomeJqueryPlugin;
$.foo();
$.bar();