简体   繁体   English

eslint 规则强制 Typescript 可选参数函数语法

[英]eslint rule to enforce Typescript optional parameter function syntax

I'd like to use eslint to enforce the succinct syntax for optional function parameters .我想使用 eslint 来强制执行可选函数参数的简洁语法。

I would like to use the short ?我想用短的? syntax in this case.在这种情况下的语法。 That is:那是:

// Expected syntax
function myFunct(optionalInput?: number): void {...}

// Undesired syntax
function myFunct(optionalInput: number | undefined): void {...}

Is there any way to enforce this with eslint?有什么办法可以用 eslint 强制执行吗?

You needn't write a custom lint rule or anything of the sort for this!您无需为此编写自定义 lint 规则或任何类似的东西! There's a helpful FAQ article on the TypeScript-ESLint website that covers this: TypeScript-ESLint 网站上有一篇有用的常见问题解答文章,涵盖了这一点:

https://typescript-eslint.io/docs/linting/troubleshooting#how-can-i-ban-specific-language-feature https://typescript-eslint.io/docs/linting/troubleshooting#how-can-i-ban-specific-language-feature

You can use the playground to deduce the correct AST selector您可以使用 Playground 推导出正确的 AST 选择器

https://typescript-eslint.io/play#showAST=es https://typescript-eslint.io/play#showAST=es

For example - you'll want to ban FunctionDeclaration > Identifier.params > TSTypeAnnotation > TSUnionType:has(TSUndefinedKeyword)例如 - 你会想要禁止FunctionDeclaration > Identifier.params > TSTypeAnnotation > TSUnionType:has(TSUndefinedKeyword)

eg - https://typescript-eslint.io/play/#ts=4.5.2&sourceType=module&showAST=es&code=PQKgUABBCmDOA2BLAdgFwsg9gWgE51V0QGNVoATbWATzQEMAPALggG1IpOByaXXTXFwA0HThADeosRFjR40UgJZcAYgFdkpRJmQARBfDq46qbcggA+CAEly0NIgBmiXkyyoAFK0wAHUzrp4AF5CNWgAXQBKADofIzoAW1hLCAAVAGVU6h9oAEFkdxMzFIyAVWQzLJymAAs6WA8y5DtnZAoAaWhqAHcBckjhKTEEuFg6AHNoZTVZCDpzX39kQIgffh8IFFgyOnIAQkHpCABfDnCwEGAwMEcNLR0IBOp1TU8pRbNA62QfNVQARhYyDUCQARrwRGIPgF4N9fqgAExAkHg3AQAA+MkIKHGkM40OWsJ+fwAzMiwbwMRANC0UBQ8VACV9iagACwAfnJqKpNOgrXpYEiLAAbphEOQJCcgA&rules=N4XyA&tsConfig=N4XyA例如- https://typescript-eslint.io/play/#ts=4.5.2&sourceType=module&showAST=es&code=PQKgUABBCmDOA2BLAdgFwsg9gWgE51V0QGNVoATbWATzQEMAPALggG1IpOByaXXTXFwA0HThADeosRFjR40UgJZcAYgFdkpRJmQARBfDq46qbcggA+CAEly0NIgBmiXkyyoAFK0wAHUzrp4AF5CNWgAXQBKADofIzoAW1hLCAAVAGVU6h9oAEFkdxMzFIyAVWQzLJymAAs6WA8y5DtnZAoAaWhqAHcBckjhKTEEuFg6AHNoZTVZCDpzX39kQIgffh8IFFgyOnIAQkHpCABfDnCwEGAwMEcNLR0IBOp1TU8pRbNA62QfNVQARhYyDUCQARrwRGIPgF4N9fqgAExAkHg3AQAA+MkIKHGkM40OWsJ+fwAzMiwbwMRANC0UBQ8VACV9iagACwAfnJqKpNOgrXpYEiLAAbphEOQJCcgA&rules=N4XyA&tsConfig=N4XyA

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM