Angular 7 TypeScript中如何禁用ESLint错误?含具体报错咨询
嘿,我来帮你搞定这两个问题!
一、特定场景禁用ESLint错误的方案
其实不用额外插件也能轻松实现,当然也有一些工具能让操作更顺手:
- 原生快捷操作(无需插件):
- 单行临时禁用:把光标移到ESLint报错的代码行,按下
Ctrl+.(Windows/Linux)或Cmd+.(Mac),在弹出的菜单里选择「Disable ESLint rule for this line」,VS Code会自动帮你生成注释// eslint-disable-next-line [规则名] - 手动添加注释:如果需要更灵活的范围,比如禁用某块代码或整个文件的规则,直接加注释就行:
- 单条规则单行禁用:
// eslint-disable-next-line no-unused-vars(禁用下一行的no-unused-vars规则) - 整个文件禁用特定规则:
/* eslint-disable no-unused-vars */(放在文件顶部)
- 单条规则单行禁用:
- 单行临时禁用:把光标移到ESLint报错的代码行,按下
- 辅助插件推荐:
ESLint Disable Snippets:提供一系列代码片段,输入eslint-disable就能快速生成各种禁用规则的注释模板,比手动敲快太多ESLint Manager:可以可视化管理项目的ESLint规则,包括临时禁用规则的范围,适合规则较多、需要批量调整的项目
二、解决TSLint的no-string-literal报错
你碰到的这个错误,是TSLint默认禁止用字符串字面量访问对象属性。针对你的代码this.validate(res['results']);,有几个实用的解决办法:
- 改用点符号访问(优先推荐):如果
res的类型定义里明确包含results属性,直接改成this.validate(res.results);就能解决问题 - 给
res定义类型接口:如果res是没有类型约束的任意对象,先定义一个接口来规范它的结构:// 定义接口,替换成你实际的结果类型 interface ApiResponse { results: any; } // 把res断言为这个接口类型 this.validate((res as ApiResponse).results); - 临时禁用这条规则:如果只是特殊场景需要用字符串字面量,在代码行上方加注释就能跳过检查:
// tslint:disable-next-line:no-string-literal this.validate(res['results']); - 考虑迁移到ESLint:毕竟Angular官方已经逐步弃用TSLint,转向ESLint了。你可以用
@angular-eslint/schematics工具把项目的TSLint配置迁移到ESLint,后续维护会更省心,也能统一ESLint的规则管理
内容的提问来源于stack exchange,提问作者Karthi
相关产品推荐
相关产品推荐

