我试图了解打字稿中的函数类型。我在下面的代码中写了一个错误,但是却无法正常工作。
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函数的类型签名,但该变量存储了我给它的任何函数。它假定在编译时抛出错误,但不抛出错误。有人可以指出我要去哪里了吗?
答案 0 :(得分:1)
想法:
关于Amadan的评论,我尝试解释我对the above commented答案的理解。我认为这不是重复的100%,但答案和问题的重点是一样的。 (如果您想将此问题标记为重复,请随时这样做。)
答案:
您所看到的行为似乎是由于每个JavaScript代码都是有效的TypeScript代码导致的。作为前提条件,可以解释以下方案:
就像在链接的问题中回答的那样:许多极其常见的JavaScript函数都具有带有3个或更多参数的回调。例如,forEach具有可与(currentValue,index,array)一起使用的回调。常见的陷阱是仅将其与currentValue一起使用。因此,参数的回调量/内容不相等。
从TypeScript角度讲是什么意思:每个带有回调的JavaScript函数都必须是可选的,并且不能强类型化。否则,所有JavaScript代码都不会在TypeScript的支持下执行。
其他信息:
函数的输出(=> void | string)是强类型的。