【发布时间】:2012-11-23 17:29:59
【问题描述】:
在 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 的打字稿:
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 不能从外部代码调用。我实际上会从类中的另一个方法调用 foo3,例如,将函数传递给 jQuery fadeOut。)
【问题讨论】:
-
您想要一个只有特定类的实例才能访问的私有函数?这听起来像
private static,根据this answer 是不可能的。如果您希望foo3公开,是否只需将其设为static对您有用吗? -
是的,我正在寻找一个只有实例才能访问的私有函数。感谢您的链接和澄清。我能够通过使用指针函数 (lambda) 来实现相同的目标,因为我试图处理的问题是丢失内部作用域函数中的外部
this引用。
标签: javascript typescript