TypeScript中如何仅针对单个interface禁用ESLint的camelcase规则?
// eslint-disable-next-line camelcase 在interface场景下不生效,是因为interface内部的属性属于类型声明块的子节点,next-line注释的作用域只会覆盖紧接在注释下的AST节点(也就是整个interface声明节点),没法穿透到块内的单个属性上。
不用调整全局ESLint配置,两种局部生效的写法就能解决问题,豁免范围完全可控,不会影响其他代码的camelcase校验:
方案1:块级规则豁免(最推荐)
在需要特殊处理的interface前后加上成对的规则开关注释,豁免范围严格限制在两段注释之间:
interface AgeData { name: string, corner: number } /* eslint-disable camelcase */ interface APIResp { file_name: string, data_info: AgeData[], interest_m: number } /* eslint-enable camelcase */
方案2:单属性行内豁免
如果觉得块级豁免范围太大,可以给每个带下划线命名的属性加当前行的禁用注释,注意这里要用eslint-disable-line作用于属性所在行,不要用next-line:
interface APIResp { file_name: string, // eslint-disable-line camelcase data_info: AgeData[], // eslint-disable-line camelcase interest_m: number // eslint-disable-line camelcase }
实践建议
这类对接外部接口的场景,类型定义只负责对齐接口原始返回结构即可,实际业务代码使用时,建议拿到响应后先做一层字段转换,把下划线命名的字段转成驼峰格式再往下传递,避免业务逻辑里零散出现下划线命名触发ESLint报错,也不用到处加规则禁用注释。
内容的提问来源于stack exchange,提问作者sal3jfc
相关产品推荐
相关产品推荐

