是否有一种方法可以强制所有对变量的引用都以检查其存在为前缀?
[我们最近为我们的一个应用程序添加了服务器端渲染,并且在服务器端渲染组件(其中未定义window
的情况下,人们引用window
时发生了一些事件。
是否有人每次引用窗口时都以typeof window !== 'undefined'
作为前缀?
例如
const isEligible = () =>
window &&
window.screen &&
window.screen.availHeight > 200;
应该是错误还是流程错误,要求在第一个窗口引用之前应该检查typeof window !== 'undefined'
?
[请注意,我已经知道有关押金的no-undef
-https://eslint.org/docs/rules/no-undef。但是,这是行不通的,因为将为绝大多数引用定义窗口,只有在将其标记为特定组件的渲染功能时才使用窗口。
流程的built-in libdefs将window
声明为类型any
。您可以将该声明覆盖为?any
类型,从而强制进行空性检查。您可以在需要这些保护的每个文件中执行此操作,也可以在整个项目中将其放入[libs]
的[libs]
部分中包含的文件中进行此操作。
.flowconfig
declare var window: ?any; window.foo; // expected error if (window) { window.foo; // no error }