Typescript编译器无法正常工作?

时间:2019-07-16 04:16:57

标签: typescript function callback higher-order-functions

我试图了解打字稿中的函数类型。我在下面的代码中写了一个错误,但是却无法正常工作。

function display():void{
     console.log("Function is a type")
}

function displayName(name:string):void{
     console.log("This is my "+name)
}

function returnName(name:string):string{
     return "My name is "+ name
}

let thatsMyName:(naem:string)=>void;
thatsMyName = display

如您所见,我创建了三个函数。我创建了一个名为thatsMyName的变量,并为其提供了returnName函数的类型签名,但该变量存储了我给它的任何函数。它假定在​​编译时抛出错误,但不抛出错误。有人可以指出我要去哪里了吗?

1 个答案:

答案 0 :(得分:1)

想法:

关于Amadan的评论,我尝试解释我对the above commented答案的理解。我认为这不是重复的100%,但答案和问题的重点是一样的。 (如果您想将此问题标记为重复,请随时这样做。)

答案:

您所看到的行为似乎是由于每个JavaScript代码都是有效的TypeScript代码导致的。作为前提条件,可以解释以下方案:

就像在链接的问题中回答的那样:许多极其常见的JavaScript函数都具有带有3个或更多参数的回调。例如,forEach具有可与(currentValue,index,array)一起使用的回调。常见的陷阱是仅将其与currentValue一起使用。因此,参数的回调量/内容不相等。

从TypeScript角度讲是什么意思:每个带有回调的JavaScript函数都必须是可选的,并且不能强类型化。否则,所有JavaScript代码都不会在TypeScript的支持下执行。

其他信息:

函数的输出(=> void | string)是强类型的。