如何向 TypeScript 函数参数添加可选命名参数?

2024-03-29

我希望能够定义一个接受箭头函数作为参数的方法。函数参数应该能够定义 0 个或多个自己的命名参数。我怎样才能做到这一点?

我试过了

public doSomething(fn: () => any) {}

and

public doSomething(fn: (...args) => any) {}

但当我尝试按如下方式调用它时,它们都会抛出“提供的参数不匹配”错误:

doSomething((test: string) => {})

(请注意,此函数的参数类型和数量可能因每次使用而异,因此我无法在原始方法上设置类型。)

我可以使用提供参数...args传递的函数中的语法,但我希望能够键入和命名特定的参数。

有没有办法做到这一点?


两个选择。原因类型安全。如果您仔细阅读下面的陈述,应该会很清楚。

修复回调:

如果你的函数期望使用 0 个或多个参数调用回调,那么回调必须可以接受(即有可选参数),即

function doSomething(fn: () => any) {}

// All arguments need to optional 
doSomething((a?:string)=>{});

与...一样 :

function doSomething(fn: (...args:string[]) => any) {}

// All arguments need to optional 
doSomething((a?:string)=>{});

修复回调签名:

如果您要使用恰好“N”个参数来调用回调,请在签名中指定它们的名称。这取决于回调take or ignore这些。例如。此回调忽略它们:

// Specify the number of arguments
function doSomething(fn: (ar1:string,arg2:string) => any) {}

doSomething(()=>{});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何向 TypeScript 函数参数添加可选命名参数? 的相关文章

随机推荐