Расширение сущности бриза с помощью TypeScript

Я разрабатываю веб-сайт с использованием HotTowel и TypeScript. В превосходном курсе PluralSight Джона Папы он расширил сущность breezejs, создав конструктор и используя Object.defineProperty для его расширения. Например, он добавил свойство с именем fullName следующим образом.

NB: 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?


person Mikaere    schedule 13.03.2015    source источник


Ответы (1)


Аксессуар поддержки Typescript из коробки. Запрошенный вами код 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}`;
    }
}
person Eric H.    schedule 15.03.2015