ESLint或Flow-对变量的强制引用以存在性检查为前缀

问题描述 投票:0回答:1

是否有一种方法可以强制所有对变量的引用都以检查其存在为前缀?

[我们最近为我们的一个应用程序添加了服务器端渲染,并且在服务器端渲染组件(其中未定义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。但是,这是行不通的,因为将为绝大多数引用定义窗口,只有在将其标记为特定组件的渲染功能时才使用窗口。

javascript eslint flow
1个回答
0
投票

流程的built-in libdefswindow声明为类型any。您可以将该声明覆盖为?any类型,从而强制进行空性检查。您可以在需要这些保护的每个文件中执行此操作,也可以在整个项目中将其放入[libs][libs]部分中包含的文件中进行此操作。

.flowconfig

declare var window: ?any; window.foo; // expected error if (window) { window.foo; // no error }

© www.soinside.com 2019 - 2024. All rights reserved.