Javascript ESLint或Flow-Force对变量的引用必须以存在性检查作为前缀
有没有办法强制对变量的所有引用都以检查其存在性为前缀 我们最近为我们的一个应用程序添加了服务器端渲染,并且在服务器端渲染组件中出现了一些引用Javascript ESLint或Flow-Force对变量的引用必须以存在性检查作为前缀,javascript,eslint,flowtype,Javascript,Eslint,Flowtype,有没有办法强制对变量的所有引用都以检查其存在性为前缀 我们最近为我们的一个应用程序添加了服务器端渲染,并且在服务器端渲染组件中出现了一些引用window的事件,其中未定义window 是否有一种方法可以让每次有人引用窗口时,都以typeof window!='未定义“ 比如说 const isEligible = () => window && window.screen && window.screen.availHeight >
window
的事件,其中未定义window
是否有一种方法可以让每次有人引用窗口时,都以typeof window!='未定义“
比如说
const isEligible = () =>
window &&
window.screen &&
window.screen.availHeight > 200;
应该是eslint或flow错误,表示应该检查typeof window!='在第一个窗口引用之前未定义“
请注意,我已经知道eslint的no undef
。但是,这不起作用,因为窗口将为绝大多数引用定义,只有在特定组件的渲染函数中使用窗口时,才应该对其进行标记 流的声明窗口
为类型任何
。您可以重写该声明,使其具有类型?any
,从而强制执行空值检查。您可以在需要这些保护的每个文件中执行此操作,也可以在项目范围内执行此操作,方法是将其放入.flowconfig
部分中包含的文件中
declare var window: ?any;
window.foo; // expected error
if (window) {
window.foo; // no error
}
希望有人能够提供特定于流的答案,但在typescript中,您可以将
窗口
添加到全局声明文件中,并将其表示为对象和未定义