在TypeScript中,下面两个函数都是相同的,但我试图在demoTwo中明确声明返回类型。返回类型是一个函数,它本身将函数作为输入。我的问题是为什么我必须给参数名称whyThis,因为它永远不会被使用?没有这个位置的东西就不会编译代码。TypeScript中lambda返回类型的签名
function demoOne() {
return function(input:() => string) : void {
var result = input();
console.log("Foo:",result);
}
}
function demoTwo(): (whyThis:() => string) => void {
return function(input:() => string) : void {
var result = input();
console.log("Bar:",result);
}
}
var sampleInput =() => "wibble";
demoOne()(sampleInput);
demoTwo()(sampleInput);
要弄清楚我问这里是Scala中的等效代码:
object Program {
def demoTwo(): (() => String) => Unit = {
def tmp(input:() => String): Unit = {
val result = input()
println("Bar: " + result)
}
return tmp
}
def main(args: Array[String]): Unit = {
val sampleInput =() => "wibble"
demoTwo()(sampleInput)
}
}
如果我们并排设置demoTwo方的声明,我们有:
function demoTwo(): (whyThis:() => string) => void { //TS
def demoTwo(): (() => String) => Unit = { //Scala
唯一的主要区别是TS需要的东西在为什么这个位置和Scala没有。为什么会这样呢?
确实如此。但是我的问题与你的陈述“你是否决定使用它们”有关。在这种情况下,参数** whyThis **永远不能使用,所以这只是对Typescript规范的忽略,或者是我有没有看到它的某种目的? –
我已经编辑了一些答案,试图回答你的问题,让我知道如果该主题仍不清楚。 – hagner
谢谢。出于某种原因无法看到图像。另外,我不认为你对我的要求很清楚。已经添加了希望澄清事情的代码的Scala版本。 –