【问题标题】:How to customize an external flow-typed definition file如何自定义外部流式定义文件
【发布时间】:2017-07-17 14:55:50
【问题描述】:

我正在使用流类型的定义文件,但需要添加插件的定义,但看不到如何执行此操作?

假设一个 npm 模块有一个看起来像这样的外部流类型定义文件:

declare class LibStatic {
  func1(): string;
}

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

declare var globalLib: LibStatic;

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

【问题讨论】:

  • 通常动态地向现有类型添加属性与静态类型系统并不真正兼容。
  • @loganfsmyth 我不确定为什么这不再是静态的。我只是在寻找一种将其他方法添加为预定义定义的方法,但结果是静态类型。
  • 如果属性已经在库本身中,那么它们应该在来自flow-typed的定义中。如果不是,那么可能是您添加了它们,或者库导出以某种方式是动态的。其中任何一个都意味着导出不是静态的。
  • 我理解,但如果是 jQuery,流类型的定义仅包含核心功能,并且根据配置的插件,$ 命名空间可以有额外的方法,也需要定义。你会怎么做?
  • 我不能说您的特定插件,但通常我希望将具有插件行为的模块导入您需要的地方,该模块的导出定义扩展行为。

标签: javascript jquery flowtype flow-typed


【解决方案1】:

听起来你正在做一件Bad Thing™。避免事后改变类型,否则你会陷入混乱并失去静态类型检查的好处。话虽如此,您可以如下解决它。

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

【讨论】:

  • 为什么这是一件坏事?我的问题的具体用例实际上是 jQuery 和插件系统。默认的 jQuery 类型定义文件包含核心组件,但根据安装的插件,可以提供其他方法。
猜你喜欢
  • 1970-01-01
  • 2011-05-28
  • 2021-12-29
  • 1970-01-01
  • 1970-01-01
  • 2012-12-27
  • 2016-05-07
  • 1970-01-01
  • 2014-11-06
相关资源
最近更新 更多