【问题标题】:Typescript compiler is not working right?Typescript 编译器工作不正常?
【发布时间】:2019-07-16 04:16:57
【问题描述】:

我正在尝试理解打字稿中的函数类型。我在它假设的下面写了代码会引发错误,但它不能正常工作。

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 函数的类型签名,但它存储了我给它的任何函数。它假设在编译时抛出错误但它没有抛出。有人能指出我哪里出错了吗?

【问题讨论】:

标签: typescript function callback higher-order-functions


【解决方案1】:

想法:

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

答案:

您所看到的行为似乎是由于每个 JavaScript 代码都是有效的 TypeScript 代码这一事实造成的。这作为先决条件解释了以下情况:

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

从 TypeScript 方面来说,这意味着什么:每个带有回调的 JavaScript 函数都必须是可选的,而不是强类型的。否则所有 JavaScript 代码都不会在 TypeScript 的底层执行。

更多信息:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    相关资源
    最近更新 更多