如何用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
相关产品推荐
相关产品推荐

