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

如何用ESLint限制JSON.stringify改用自定义工具函数并仅作用于TS/TSX文件?

解决方案

1. 选用no-restricted-syntax规则(替代no-restricted-globals)

no-restricted-globals无法精准限制JSON.stringify——它只能限制全局变量JSON本身,无法单独管控其stringify方法。而no-restricted-syntax可以通过AST选择器精准匹配对JSON.stringify的调用,完全满足你的需求。

2. 配置规则并限定文件范围

在你的ESLint配置文件(如.eslintrc.js或.eslintrc.json)中,通过overrides字段仅对.ts和.tsx文件生效:

module.exports = {
  // 全局配置(如parser、extends等)...
  overrides: [
    {
      files: ["*.ts", "*.tsx"],
      rules: {
        "no-restricted-syntax": [
          "error",
          {
            selector: "MemberExpression[object.name='JSON'][property.name='stringify']",
            message: "请使用自定义的错误处理工具函数替代全局JSON.stringify"
          }
        ]
      }
    }
  ]
};

关键配置说明

  • overrides.files:指定规则仅作用于.ts和.tsx文件,不会影响.js/.jsx等其他类型文件。
  • AST选择器:MemberExpression[object.name='JSON'][property.name='stringify']会精准匹配所有JSON.stringify(...)的调用,不会误判JSON.parse或其他JSON对象方法。
  • 自定义错误提示:message字段可以明确告知开发人员应使用的替代工具名称(比如你的safeStringify),避免歧义。

3. 验证效果

保存配置后,在.ts/.tsx文件中使用JSON.stringify时,ESLint会立即抛出错误提示;而在其他类型文件中使用则不受限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 17:42:10