如何为TypeScript中未调用函数的拼写错误配置代码检查?
当然可以!这种遗漏函数调用括号的小错误,在大型项目里排查起来确实闹心,不过 TypeScript 和 ESLint 都能帮你提前把这类问题揪出来,不用等到调试时头疼。我给你详细说说怎么配置:
TypeScript 本身就可以检测到这类“只引用函数但不调用也不使用其值”的情况。只要在你的 tsconfig.json 里开启相关严格模式规则,就能自动报错:
{ "compilerOptions": { "strict": true, // 开启严格模式会包含一系列检查规则 "noUnusedExpressions": true, // 专门检查未使用的表达式 "noUnusedLocals": true // 顺便检查未使用的变量,锦上添花 } }
比如你写 Date.parse; 这种代码,TypeScript 会直接抛出类似 "'Date.parse' is declared but its value is never read." 的错误,提醒你这个函数引用没有被使用,大概率是漏加了调用括号。
如果你想要更灵活或针对性的检查,可以用 ESLint 配合 TypeScript 插件来实现。首先确保你已经安装了 @typescript-eslint/eslint-plugin 和 @typescript-eslint/parser,然后在 .eslintrc.json 里配置:
{ "parser": "@typescript-eslint/parser", "plugins": ["@typescript-eslint"], "rules": { "@typescript-eslint/no-unused-expressions": [ "error", { "allowShortCircuit": true, // 允许短路表达式(比如 a && b()) "allowTernary": true, // 允许三元表达式(比如 a ? b() : c()) "allowTaggedTemplates": true // 允许模板标签函数 } ] } }
这个规则会精准识别出那些“没有被使用的函数引用表达式”,比如你写的 JSON.stringify; 或者 doSomething;,ESLint 会直接标红,提示你 "Expected an assignment or function call and instead saw an expression.",明确告诉你这里应该是赋值或者函数调用,而不是单纯的函数引用。
不用担心这些规则会误报——如果你确实需要引用函数本身(比如把函数作为参数传递给另一个函数,或者赋值给变量),比如 const handleClick = doSomething; 或者 setTimeout(doSomething, 1000);,TypeScript 和 ESLint 都能识别出这是合法的使用场景,不会报错。
内容的提问来源于stack exchange,提问作者Specyk

