TypeScript では、コンパイラがプロトタイプに関数を追加しないと、クラスで関数を宣言できないようです。例えば:
class MyTypeScriptClass {
// method, is added to prototype
foo1(): void {
alert('invoked foo1');
}
// private method also added to prototype
private foo2(): void {
alert('invoked foo2');
}
//// can I have a local function, without making it a private method?
//function foo3() {
// alert('invoked foo3');
//}
}
上記はこれにコンパイルされます:
var MyTypeScriptClass = (function () {
function MyTypeScriptClass() { }
MyTypeScriptClass.prototype.foo1 = function () {
alert('invoked foo1');
};
MyTypeScriptClass.prototype.foo2 = function () {
alert('invoked foo2');
};
return MyTypeScriptClass;
})();
私が探しているのは、次の JavaScript にコンパイルできる typescript です。
var fvm = new FlasherViewModel2();
var MyTypeScriptClass = (function () {
function MyTypeScriptClass() { }
MyTypeScriptClass.prototype.foo1 = function () {
alert('invoked foo1');
};
MyTypeScriptClass.prototype.foo2 = function () {
alert('invoked foo2');
};
function foo3() {
alert('invoked foo3');
}
return MyTypeScriptClass;
})();
それはできますか?
(補足として、foo3 は外部コードから呼び出せないことを知っています。たとえば、関数を jQuery fadeOut に渡すために、実際にはクラス内の別のメソッドから foo3 を呼び出します。)