这与我提出的另一个问题非常相似,但也可以提出不同的问题,并且可能会被不同的受众发现有用。
我有一个用于淘汰验证的自定义规则:
ko.validation.rules["sameAs"] = {
validator: function (val, otherObservable) {
return val === otherObservable();
},
message: "Value should be same as {0}, but differs"
};
现在在原始 javascript 中,这工作得很好,因为用法如下所示:
function SomeObject() {
this.Email = ko.observable().extend({ required: true, email: true });
this.ConfirmationEmail = ko.observable().extend({ required: true, email: true, sameAs: this.Email });
}
但是,如果我尝试写这个,现在在 Typescript 土地上:
class SomeObject {
public Email = ko.observable().extend({ required: true, email: true });
public ConfirmationEmail = ko.observable().extend({ required: true, email: true, sameAs: this.Email });
}
我现在得到错误:
不能在类主体的初始化程序或超级构造函数调用中引用关键字“this”
这是有道理的,但是我不确定我该如何做我最初会做的事情,除非我尝试将它破解到构造函数或其他东西中,这使得我的类现在看起来有点可怕。