TypeScript似乎有一个重要的小功能,可以让您将成员添加到现有的接口定义中。在接口中,成员是附加的,因此如果您使用一组成员定义接口,则可以再次定义接口以向接口添加其他成员。
我有一个预定义的外部flowjs定义文件,如下所示:
declare class JQueryStatic {
ajax(url: string, settings?: any): any;
}
declare var jQuery: JQueryStatic;
declare var $: JQueryStatic;
现在想在JQueryStatic类中添加一个新方法myPlugin(settings?: any): any;
。
这是以强类型方式支持jQuery插件的关键。
在流程中建议的方法是什么?
答案 0 :(得分:1)
交叉点类型可能适合您。
type A = { foo: string; };
type B = { bar: string; };
type AB = A & B;
AB代表{ foo: string; bar: string;}
;
来自https://github.com/Microsoft/TypeScript/issues/1265(参见“交叉点类型”)
答案 1 :(得分:1)
交叉路是最佳选择。
首先我们需要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();
答案 2 :(得分:0)
关于创建此类声明文件已存在未解决的问题:https://github.com/facebook/flow/issues/2421
它没有得到任何关注但它可能(它只有5天才到达)