【发布时间】:2014-09-18 20:59:33
【问题描述】:
概述
我只想在 TypeScript 中编写一个 Knockout Computed 函数作为原型的属性。当它不是ko.computed 时,我知道如何将函数编写为原型的属性。我知道如何将ko.computed 写为对象(但不是原型)的属性,但我似乎找不到交集的正确语法。
我想要什么(JS)
MyClass.prototype.myFunction = ko.computed(function(){
// js goes here
});
我有什么 (TS)
myFunction(): any {
ko.computed(function(){
// code
})
}
我的 TS 输出的内容(不需要)
MyClass.prototype.myFunction = function(){
ko.computed(function(){
// code
})
});
TypeScript 向原型发出的表达式示例
TS
class MyClass {
name: KnockoutObservable<string>;
editing: KnockoutObservable<boolean>;
constructor(name: string) {
this.name = ko.observable(fullName);
this.editing = ko.observable(false);
}
edit(): void {
this.editing(true);
}
}
JS
var MyClass = (function () {
function MyClass(name) {
this.name = ko.observable(fullName);
this.editing = ko.observable(false);
}
MyClass.prototype.edit = function () {
this.editing(true);
};
return MyClass;
})();
如果没有办法以我描述的方式类似地编写 ko.computed,我会觉得这真的很令人费解。
【问题讨论】:
-
您确定要这样做吗?如果您的原型
computed值依赖于实例observables,那么只要 any 实例中的实例值发生更改,或者可能出现更糟糕的行为,您将重新触发跨类的所有实例的计算> -
好点;我不想在原型上出现这个!
标签: javascript knockout.js typescript