eslint 规则用于强制 TypeScript 可选参数函数语法
我想使用 eslint 来强制使用 可选函数参数 的简洁语法。
在这种情况下,我想使用简短的 ? 语法。也就是说:
// Expected syntax
function myFunct(optionalInput?: number): void {...}
// Undesired syntax
function myFunct(optionalInput: number | undefined): void {...}
有没有办法用 eslint 强制执行这个?
答案#1
你不需要为此编写自定义 lint 规则或类似的东西!TypeScript-ESLint 网站上有一篇有用的常见问题解答文章涉及到这个问题:
https://typescript-eslint.io/docs/linting/troubleshooting#how-can-i-ban-specific-language-feature
你可以使用游乐场来推导正确的 AST 选择器
https://typescript-eslint.io/play#showAST=es
例如——你会想要禁止 FunctionDeclaration > Identifier.params > TSTypeAnnotation > TSUnionType:has(TSUndefinedKeyword)
例如 - https://typescript-eslint.io/play/#ts=4.5.2&sourceType=module&showAST=es&code=PQKgUABBCmDOA2BLAdgFwsg9gWgE51V0QGNVoATbWATzQEMAPALggG1IpOByaXXTXFwA0HThADeosRFjR40UgJZcAYgFdkpRJmQARBfDq46qbcggA+CAEly0NIgBmiXkyyoAFK0wAHUzrp4AF5CNWgAXQBKADofIzoAW1hLCAAVAGVU6h9oAEFkdxMzFIyAVWQzLJymAAs6WA8y5DtnZAoAaWhqAHcBckjhKTEEuFg6AHNoZTVZCDpzX39kQIgffh8IFFgyOnIAQkHpCABfDnCwEGAwMEcNLR0IBOp1TU8pRbNA62QfNVQARhYyDUCQARrwRGIPgF4N9fqgAExAkHg3AQAA+MkIKHGkM40OWsJ+fwAzMiwbwMRANC0UBQ8VACV9iagACwAfnJqKpNOgrXpYEiLAAbphEOQJCcgA&rules=N4XyA&tsConfig=N4XyA
注意:上述选择器并不完全正确,并且有一些误报——但它是一个很好的起点,帮助你了解选择器可能会是什么样子。