強く型付けされた静的型付き言語については、根本的な議論になりつつあります。他の討論者は、純粋なJavaScriptの愛好家です。私はC#とjavascriptの両方で作業するのが好きです。会話は、TypeScriptに関する議論と、厳密に型指定されているために純粋なjよりも優れていることから生じました。 (すでに主観的)。だから私は彼に次の例でしようとしているところでTypeScriptが既に失敗しているという議論をしました。基本的にC#とJavascriptの "this"キーワードが同じになることができます
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
var greeter = new Greeter("world");
var greetWorld = greeter.greet;
alert(greetWorld()); //undefined, unexpected for strongly typed languages
私はすでにこれがJSで期待されていると言いました。実際、私はこれが大好きです。これは、動的に型指定された言語であることがとても強力である理由です。しかし、 'this'キーワードは、JSのプロパティであり、なぜTypeScriptが単なる追加レイヤーであり、混乱を招き、それを改善するものではありません。
"関数が作成されると、この関数が動作するオブジェクトにリンクするthisというキーワードが作成されます(舞台裏で)。
これは本当に関数/オブジェクトの単なるプロパティです。厳密に型定義された定義:「各タイプのデータ(整数、文字、16進数、パック10進数など)はプログラミング言語の一部として事前定義されており、与えられたプログラムに定義されたすべての定数または変数は、データ型の "したがって、データ型関数/オブジェクトは、データ型のキーワード "ONE"とは別個です。
私は議論を家に持ち込むことはできません。実際、私は間違っているかもしれません。しかし、私の場合、上記の問題は実行時の型エラーです。つまり、 'this'キーワードが本当にプログラミング言語でバインドされていれば期待されるはずですが、greeting
ではありません。
何か不足していますか?
ます場合、私は知りません何かが欠落していますが、私はあなたの意見が不足していることを恐れています。質問はなんですか?しかし、私があなたに伝えることの1つは、誰かがあなたが彼に何を話しているか把握できない場合、あなたの少なくとも1人が遅れているか、聞きたくないということです。そしてそれはあなたの損失を減らし、手を振って、あなたが遅滞していないことを確認するためにいくつかの宿題をする時が来たことを意味します。 –
私は、TypeScriptが強く型付けされた言語のすべての動作を複製することができないという理由で、JavaScriptよりも「それほど優れていません」と言っても過言ではないと思います。 – user1620220