2017-07-17 56 views
1

我正在使用流式定义文件,但需要为插件添加定义,并且无法看到如何执行此操作?如何自定义外部流式定义文件

比方说,一个NPM模块有一个外部的流量类型的定义文件,它看起来是这样的:

declare class LibStatic { 
    func1(): string; 
} 

declare module 'lib' { 
    declare var exports: LibStatic; 
} 

declare var globalLib: LibStatic; 

我将如何自定义外部流量类型的定义文件,如果func2需要一种新的方法是动态已添加到LibStatic

+0

通常为现有类型动态添加属性与静态类型系统不兼容。 – loganfsmyth

+0

@loganfsmyth我不知道为什么这将不再是静态的。我只是寻找一种方法来添加额外的方法作为预定义的定义,但结果是一个静态类型。 – doberkofler

+0

如果这些属性已经存在于库本身中,那么它们应该放在'flow-typed'的定义中。如果它们不是,那么可以假设你添加了它们,或者库出口是动态的。这些意味着出口不是静态的。 – loganfsmyth

回答

2

这听起来像你在做一个坏事™。事实上避免变异类型,否则你会陷入混乱并失去静态类型检查的好处。有了这个说法,你可以解决它如下。

创建您自己的图书馆,该图书馆从LibStatic重新导出所有内容。您可以在那里添加新的方法并完全控制导出的类型。现在在您以前使用LibStatic的地方使用自己的图书馆。

+0

为什么这会是一件坏事?我的问题的具体用例实际上是jQuery和插件系统。默认的jQuery类型定义文件包含核心组件,但取决于所安装的插件,可以使用其他方法。 – doberkofler