私は TypeScript を見てきました (オンラインの遊び場のように... 自分の JS を書くほうが好きですが :P)
私が知る限り、やりたいことは非常に簡単に実行できます。そして、これは私にとって魅力のように機能しました:
class Greeter {
greeting: string;
closureMethod;
constructor (message: string) {
this.greeting = message;
var that = this;
var closureMethod = function()
{
console.log(that.greeting);
};
this.closureMethod = closureMethod;
}
greet() {
return "Hello, " + this.greeting;
}
}
var greeter = new Greeter("world");
var another = new Greeter('Foobar');
var button = document.createElement('button');
button.innerText = "Say Hello";
button.onclick = function()
{
greeter.closureMethod();
another.closureMethod();
}
document.body.appendChild(button)
どちらも機能しましたが、さらに短くなりました(これも機能します)
class Greeter {
greeting: string;
closureMethod;//define property here, no type
constructor (message: string) {
this.greeting = message;
var that = this;
this.closureMethod = function()
{
console.log(that.greeting);
};
}
greet() {
return "Hello, " + this.greeting;
}
}
どちらも同じ結果を生成します。つまり、新しいインスタンスごとにメソッドを何度も定義するコンストラクターです (正直なところ、これは良いアイデアではありません)。
ご覧のとおりthat
、 ではなくを使用してインスタンスにアクセスしますthis
。これは、同じメソッドを何度も作成することの唯一の利点です...そうする正当な理由がある限り。しかし、私はこれについて暴言を吐くつもりはありません。
上記のコードは機能し、必要なコンストラクター関数を生成します。