Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何正确使用函数参数的any和/或unknown_Javascript_Typescript - Fatal编程技术网

Javascript 如何正确使用函数参数的any和/或unknown

Javascript 如何正确使用函数参数的any和/或unknown,javascript,typescript,Javascript,Typescript,我们正在尝试将事件总线从JavaScript转换为TypeScript。我们关心的是这段代码: 导出函数发布(eventName,…args){ 如果(!订阅[eventName]){return} for(订阅的常量回调[eventName]){ 常量结果=回调(…参数) 如果(结果===false){break} } } 翻译成打字稿: //eslint禁用下一行@typescript eslint/no显式任何 类型TCallBack=(…参数:any)=>void 常量订阅:{[key

我们正在尝试将事件总线从JavaScript转换为TypeScript。我们关心的是这段代码:

导出函数发布(eventName,…args){
如果(!订阅[eventName]){return}
for(订阅的常量回调[eventName]){
常量结果=回调(…参数)
如果(结果===false){break}
}
}
翻译成打字稿:

//eslint禁用下一行@typescript eslint/no显式任何
类型TCallBack=(…参数:any)=>void
常量订阅:{[key:string]:TCallBack[]}={}
导出函数发布(eventName:string,…args:unknown[]){
如果(!订阅[eventName]){return}
for(订阅的常量回调[eventName]){
回调(…args)
}
}

没有错误,但我不太确定我们是否正确地使用了
any
unknown
类型作为
callback
的参数。
回调
可以有一个、多个或根本没有参数,并且参数可以是任何类型。这是使用
any
unknown>

的正确方法吗?您应该将“可选”运算符添加到…args:…args?:unknown[]我希望像
…args
这样的排列类型至少是一种数组类型,因此可能
any[]
。回调不应该返回布尔值吗?在第一个示例中,您将其返回值与false进行比较,我不清楚为什么转换为typescript需要对实际行为进行更改。因为如果我在中保留
if(result==false)
我得到了这个TS错误,“由于类型'void'和'boolean'没有重叠,因此此条件将始终返回'false'我猜@jornsharpe的意思是您应该添加
boolean
作为
TCallBack
的有效返回类型:
type TCallBack=(…args?:unknown[])=>boolean | void
@SandroSchaurer rest arg是可选的(我认为TS会抱怨)-如果没有,它就会变成一个空数组,不是未定义的。您应该将“可选”运算符添加到…args:…args?:unknown[]我希望像
…args
这样的排列类型至少是一种数组类型,因此可能
任意[]
。回调不应该返回布尔值吗?在第一个示例中,您将其返回值与false进行比较,我不清楚为什么转换为typescript需要对实际行为进行更改。因为如果我在中保留
if(result==false)
我得到了这个TS错误,“由于类型'void'和'boolean'没有重叠,因此此条件将始终返回'false'我猜@jornsharpe的意思是您应该添加
boolean
作为
TCallBack
的有效返回类型:
type TCallBack=(…args?:unknown[])=>boolean | void
@SandroSchaurer rest arg是可选的(我认为TS会抱怨)-如果没有,它将成为一个空数组,而不是未定义的。