以下のTypeScriptでは、戻り値の型を明示的に宣言しようとしている点を除き、両方の関数は同じです。demoTwo。戻り型は、それ自身が入力として関数をとる関数です。私の質問は、なぜなぜそれが使用されないと仮定すると、パラメータ名を与える必要がありますか?その位置に何かがなければ、コードはコンパイルされません。TypeScriptのラムダ戻り型のシグニチャー
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では同等のコードだ求めているものを明確にする:
function demoTwo(): (whyThis:() => string) => void { //TS
def demoTwo(): (() => String) => Unit = { //Scala
:我々は、我々が持っている側の
demoTwo側の宣言を設定した場合
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)
}
}
唯一の主な違いは、TSがで何かを必要としていることです。なぜなら、このの位置とScalaはそうではありません。なぜこれが当てはまるべきですか?
実際にはそうです。しかし、私の質問はあなたの声明に関連しています。この場合、パラメータ** whyThis **は決して使用できないので、これは単にTypescript仕様の見落としであるか、それとも私が見ていない何らかの目的がありますか? –
あなたの質問に答えるために私の答えを少し編集しましたが、その話題がまだ不明な場合は教えてください。 – hagner
ありがとうございます。何らかの理由で画像が見えません。また、私はあなたが何を求めているのか分かりません。うまくいけば明らかにするコードのScala版を追加しました。 –