我正在使用HotTowel和TypeScript开发网站。在John Papa出色的PluralSight课程中,他通过创建构造函数并使用' Object.defineProperty'扩展了一个breezejs实体。扩展它。例如,他添加了一个名为fullName
的属性,如下所示。
注意:metadataStore是breezejs元数据存储
function registerPerson(metadataStore) {
metadataStore.registerEntityTypeCtor('Person', Person);
function Person() {
this.isPartial = false;
this.isSpeaker = false;
}
Object.defineProperty(Person.prototype, 'fullName', {
get: function () {
var fn = this.firstName;
var ln = this.lastName;
return ln ? fn + ' ' + ln : fn;
}
});
}
我的问题是如何使用TypeScript实现相同的目标?
答案 0 :(得分:2)
打字稿支持访问者。您询问的TypeScript代码可能是:
function registerPerson(metadataStore) {
metadataStore.registerEntityTypeCtor('Person', Person);
}
class Person {
public firstName: string;
public lastName: string;
constructor(public isPartial=false, public isSpeaker=false) {
}
get fullName():string {
return `${this.firstName} ${this.lastName}`;
}
}