如何将成员添加到flowjs中的现有定义

时间:2016-09-12 08:02:17

标签: javascript jquery flowtype

TypeScript似乎有一个重要的小功能,可以让您将成员添加到现有的接口定义中。在接口中,成员是附加的,因此如果您使用一组成员定义接口,则可以再次定义接口以向接口添加其他成员。

我有一个预定义的外部flowjs定义文件,如下所示:

declare class JQueryStatic {
  ajax(url: string, settings?: any): any;
}
declare var jQuery: JQueryStatic;
declare var $: JQueryStatic;

现在想在JQueryStatic类中添加一个新方法myPlugin(settings?: any): any;

这是以强类型方式支持jQuery插件的关键。

在流程中建议的方法是什么?

3 个答案:

答案 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天才到达)