繁体   English   中英

将流类型注释提取到外部文件中

[英]Extract flow type annotations into external files

我想从我的源代码中删除Flow的详细信息。 有没有办法在单独的文件中声明类型?

这就是我所拥有的:

// @flow
// src/writer.js
class Writer {
  write(text: string):string {
    return `I wrote ${text}`
  }
}

这是我要实现的目标:

// @flow
// src/writer.js
class Writer {
  write(text) {
    return `I wrote ${text}`
  }
}

// src/definitions/writer.js.flow
declare class Writer {
  write(text: string):string
}

我尝试将writer.js.flow放置在flow-typed文件夹中,还尝试声明Writer将扩展的IWriter接口。 Flow不喜欢它。

我不确定这是否可能,因为函数可以声明自己的变量,这些变量也应正确注释。

在Flow中,没有一种方法可以完全满足您的需求。 支持一些特定的用例:

  • 如果您有一些非Flo​​w代码(例如库)和一些Flow应用程序代码,并且希望Flow代码可以使用非Flow代码,但知道涉及的类型,则可以编写“库定义” 重要的是要了解,不会对照实现代码检查此库定义,只是假定它是正确的,因此您必须小心编写libdefs。

  • 如果您具有Flow代码,并且想要在不带Flow批注的情况下阅读或运行它,则可以使用flow-remove-types将Flow语法从文件中剥离。

但我认为您还想要其他东西。 听起来您想编写没有Flow批注的代码,然后将批注写入另一个文件,但是让Flow根据代码检查批注。 Flow目前不支持此功能。

(顺便说一句,我也不希望它们会添加任何东西。类型的主要好处是在阅读,编写和思考代码时提供了帮助。Flow具有很好的推断能力,因此总的来说,您不必编写那么多代码键入,但是您所做的(如在导出的函数中)通常有助于思考代码。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM