使用TypeScript扩展breeze实体

时间:2015-03-13 21:07:26

标签: javascript typescript breeze hottowel

我正在使用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实现相同的目标?

1 个答案:

答案 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}`;
    }
}