使用typescript-eslint时,ESLint扁平配置需保留languageOptions.globals吗?
使用typescript-eslint时,ESLint扁平配置的languageOptions.globals是否需要保留?
TypeScript能覆盖大部分全局变量的识别,但不代表ESLint的globals字段完全没用,要不要保留得看你的项目场景:
- 如果项目里所有全局变量都有完善的TypeScript类型声明(比如通过
tsconfig.json的lib引入DOM全局类型、第三方库自带全局类型声明),typescript-eslint会自动从TypeScript类型系统中读取全局变量信息,这时候确实不需要手动在languageOptions.globals里重复配置,避免冗余检查。 - 但如果存在自定义全局变量(比如自行挂载到
window的变量、无类型声明的全局变量),TypeScript会报“找不到名称”错误,同时ESLint的no-undef规则也会触发。这种情况要么给变量补写.d.ts类型声明,要么在globals里配置该变量来让ESLint忽略未定义检查。 - 另外,
globals字段还能控制全局变量的可写性,比如配置"MY_GLOBAL": "readonly",ESLint会检查是否有代码修改这个全局变量——这类规则管控是TypeScript类型系统做不到的,如果你需要这类检查,就必须保留globals配置。
总结:如果项目所有全局变量都有TypeScript类型声明,且不需要管控全局变量的可写性,那可以移除languageOptions.globals;反之则需要根据需求保留或配置该字段。
内容的提问来源于stack exchange,提问作者gamertike
相关产品推荐
相关产品推荐

