Javascript 如何自定义外部流类型定义文件
我正在使用一个流类型的定义文件,但需要添加插件的定义,而看不到如何做到这一点的方法 假设npm模块有一个外部流类型的定义文件,该文件如下所示:Javascript 如何自定义外部流类型定义文件,javascript,jquery,flowtype,flow-typed,Javascript,Jquery,Flowtype,Flow Typed,我正在使用一个流类型的定义文件,但需要添加插件的定义,而看不到如何做到这一点的方法 假设npm模块有一个外部流类型的定义文件,该文件如下所示: declare class LibStatic { func1(): string; } declare module 'lib' { declare var exports: LibStatic; } declare var globalLib: LibStatic; 如果一个新方法func2需要动态添加到LibStatic?听起来你在做
declare class LibStatic {
func1(): string;
}
declare module 'lib' {
declare var exports: LibStatic;
}
declare var globalLib: LibStatic;
如果一个新方法
func2
需要动态添加到LibStatic
?听起来你在做一件坏事,我该如何自定义外部流类型定义文件™. 避免事后变异类型,否则会陷入混乱,失去静态类型检查的好处。话虽如此,您可以如下处理它
创建您自己的库,它可以从
LibStatic
重新导出所有内容。您可以在那里添加新方法,并完全控制导出的类型。现在,您可以在以前使用LibStatic
的任何地方使用自己的库。通常,向现有类型动态添加属性与静态类型系统并不真正兼容。@loganfsmyth我不确定为什么不再是静态的。我只是在寻找一种方法,将其他方法添加到预定义的定义中,但结果是静态类型。如果属性已经存在于库本身中,那么它们应该位于流类型的定义中。如果它们不是,那么您可以添加它们,或者库导出以某种方式是动态的。这两种情况都意味着导出不是静态的。我理解,但是在jQuery的情况下,flow typed的定义只包含核心功能,并且根据配置的插件,$namespace可以有其他需要定义的方法。你会怎么做?我不能说你的特定插件,但通常我会期望在你需要的地方导入具有插件行为的模块,该模块的导出定义扩展行为。为什么这是一件坏事?我的问题的具体用例实际上是jQuery和插件系统。默认的jQuery类型定义文件包含核心组件,但根据安装的插件,可以提供其他方法。