在Flow中隐藏全局变量?

时间:2019-01-21 16:28:58

标签: javascript flowtype

我正在用JavaScript + Flow编写一些代码,并希望保持其尽可能纯净,这也意味着跳过诸如windowdocument之类的全局变量,并将它们作为函数参数传递。但是,很容易忘记这里或那里的流浪document参考。是否可以以某种方式禁止这些全局变量,只允许它们在顶级文件中?到目前为止,我在大多数文档的顶部都这样做:

const window = undefined
const document = undefined

这样,只有作为参数传入的实例才起作用:

// This works
function foo(document: Document) {
    document.doThisOrThat();
}

// This triggers a typecheck error 
function bar() {
    document.doThisOrThat();
}

还有其他解决方案吗? (我希望采用白名单方法,禁止所有白名单中的全局变量。)

1 个答案:

答案 0 :(得分:0)

您可以通过在flowconfig的no_flowlib=true部分中添加[options]来将Flow设置为忽略flowlib。

从那里,您可以创建自己的libs文件夹,并且仅包含所需的库定义。要使它们全局可用,请将路径添加到flowconfig的[libs]部分中的libs文件夹。