Javascript 我可以让Flow使用任意的Babel插件(或其他代码转换小部件)吗?

Javascript 我可以让Flow使用任意的Babel插件(或其他代码转换小部件)吗?,javascript,babeljs,flowtype,Javascript,Babeljs,Flowtype,我正在使用CreateReact应用程序和流量。我可以通过在config-overrides.js中指定任意Babel插件(在React App rewired和customize cra的帮助下)来添加任意Babel插件,以便在Create React App中使用。我可以通过在Babel.config.js中命名来添加Babel插件,以便在Jest测试中使用。通过这些方法,我可以在这些工具有机会被我想要使用的任何非标准语法(例如JavaScript装饰器)弄糊涂之前转换代码 但我不知道如何为

我正在使用CreateReact应用程序和流量。我可以通过在config-overrides.js中指定任意Babel插件(在React App rewired和customize cra的帮助下)来添加任意Babel插件,以便在Create React App中使用。我可以通过在Babel.config.js中命名来添加Babel插件,以便在Jest测试中使用。通过这些方法,我可以在这些工具有机会被我想要使用的任何非标准语法(例如JavaScript装饰器)弄糊涂之前转换代码

但我不知道如何为Flow做同样的事情。它似乎不接受巴贝尔插件。也许它完全自己解析代码,甚至不使用Babel?我不知道。流本身是否接受插件?我不知道

对于我来说,有没有简单的方法将函数插入到某个工具或其他工具中,以便在Flow看到它之前任意转换代码?或者我真的需要深入研究Flow的源代码并对其进行修改才能实现这一点吗?(我对此不感兴趣。)

[Flow]似乎不接受Babel插件

不,flow支持一些建议的ECMAScript特性(其中一些以前支持flow配置选项),但它没有任何类型的插件系统

也许它完全自己解析代码,甚至不使用Babel

是的。Flow实现了可完全独立于流类型检查器使用的

流本身是否接受插件?我不知道

不,我认为这是表明这种可能性的最相关问题:

我可以想象的一个例子是,如果您想在flow前面放置一些Babel转换,将实验/自定义语言功能传输回ES6,而不必将其写入JS文件,然后重新分析它

在本例中,他说,若流可以将任意兼容的AST作为输入并对其执行类型检查,那个么在将AST输入流之前,可以对该AST执行babel转换

对于我来说,有没有简单的方法将函数插入到某个工具或其他工具中,以便在Flow看到它之前任意转换代码?或者我真的需要深入研究Flow的源代码并对其进行修改才能实现这一点吗?(我对此不感兴趣。)

答案就在上面。您描述的工具通常是babel。基本上,您可以在代码上运行babel转换来删除flow无法识别的构造,然后使用flow检查生成的中介JavaScript文件。就其性质而言,此解决方案排除了类似LSP或其他实时检查的可能性,因为您总是在两步流程中执行完整检查


归根结底,在极少数情况下,这种方法是值得的。这种情况需要高度非标准化。

为什么需要为流转换代码?你有错误吗?如果是这样的话,发布您看到的代码/错误会很有帮助。我不想深入讨论这个问题。如果我问错了问题,那么我仍然想知道答案!Flow无法运行Babel插件。如果您通过Babel使用的是实验性语法,那么它需要是Flow本身也知道如何处理的语法,因此在不知道您遇到了什么错误或是什么语法导致了问题的情况下,没有任何有用的方法为您回答这个问题。