You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置@typescript-eslint/ban-types实现默认报错自定义规则警告

问题原因

@typescript-eslint/ban-types的报错级别是规则全局生效的,配置数组的第一个参数会统一控制所有命中规则的提示等级,规则本身不支持给单个禁止类型单独设级别。你之前把全局级别设为warn再开extendDefaults,默认禁止的类型当然也会全部变成警告,达不到预期效果。

实现方法

拆分两条独立规则就能实现分级提示,不需要装额外插件:

  • 用@typescript-eslint/ban-types做默认类型的error级检测:规则等级设为error,开extendDefaults: true,types字段里不要加自定义的禁止类型,这样String、Object这类默认禁的类型用了就会正常抛错。
  • 用ESLint内置的no-restricted-syntax做自定义类型的warn级检测:规则等级设为warn,通过AST选择器匹配类型位置的UntypedFormGroup引用,配上自定义提示就行,和前一条规则互不干扰。

完整配置示例:

{
  "rules": {
    "@typescript-eslint/ban-types": [
      "error",
      {
        "extendDefaults": true
      }
    ],
    "no-restricted-syntax": [
      "warn",
      {
        "selector": "TSTypeReference[typeName.name='UntypedFormGroup']",
        "message": "Please use FormGroup which is a generic and helps you write better code."
      }
    ]
  }
}

说明:上面用的TSTypeReference选择器只会匹配类型标注、泛型参数等类型位置的UntypedFormGroup引用,不会误判值位置的同名变量、函数调用,常规场景下精度足够。如果要处理类型重命名、命名空间嵌套引用这类复杂场景,按需调整AST选择器即可。

内容的提问来源于stack exchange,提问作者sandrooco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 05:09:30