如何阻止ESLint消除String与string类型的区分?
解决ESLint自动将类型注解中的
String转为string的问题 问题根源在于@typescript-eslint/prefer-primitive-type规则——该规则属于@typescript-eslint/recommended规则集,会自动把类型注解里的包装类型(如String、Number)转换为对应的原始类型(string、number)。你之前禁用的no-new-wrappers规则仅针对new String()这类创建包装对象的代码,和类型注解无关,因此无效。
以下是几种可行的解决方案:
1. 全局禁用该规则
在ESLint配置文件中添加规则禁用项:
export default { extends: [ 'eslint:recommended', '@typescript-eslint/recommended' ], rules: { '@typescript-eslint/prefer-primitive-type': 'off' } };
2. 仅在特定函数处禁用
如果不想全局关闭规则,可使用行注释单独禁用当前行的规则检查:
// eslint-disable-next-line @typescript-eslint/prefer-primitive-type export function normalizeUrl(url: string | String | URL) { // 函数逻辑 }
3. 针对性配置规则
若希望仅保留String类型的支持,同时对其他包装类型(如Number、Boolean)维持规则生效,可按如下方式配置:
export default { extends: [ 'eslint:recommended', '@typescript-eslint/recommended' ], rules: { '@typescript-eslint/prefer-primitive-type': [ 'error', { preferNumber: true, preferBoolean: true, preferString: false // 关闭String转string的自动修复 } ] } };
内容的提问来源于stack exchange,提问作者wheresrhys
相关产品推荐
相关产品推荐

