Объявление нокаута, вычисленное в typescript - программирование
Подтвердить что ты не робот

Объявление нокаута, вычисленное в typescript

Я новичок в typescript и хотел бы объединить его с добротой нокаута. У меня есть вычисленный наблюдаемый, который в настоящее время работает, но хочу знать, правильно ли это в нем или есть лучший способ.

Я использую файл определения нокаута из nu-get. В нем есть 4 определения KnockoutComputed (x).

  • KnockoutComputed
  • KnockoutComputedDefine
  • KnockoutComputedFunctions
  • KnockoutComputedStatic

Мне нравится {} метод объявления наблюдаемого и хотел бы сохранить это. Короче говоря, это правильный метод объявления наблюдаемых или есть альтернативный способ (возможно, с intlisense в функции)

Я использую первый так:

class PersonViewModel {
    public firstname: KnockoutObservable<string>;
    public lastname: KnockoutObservable<string>;
    public fullname: KnockoutComputed<string>;
    constructor() {
        this.firstname = ko.observable('');
        this.lastname = ko.observable('');
        this.fullname = ko.computed({
            owner: this,
            read: function () {
                return this.firstname() + " " + this.lastname();
            }
        });
    }
}

с помощью html-фрагмента:

<h2>Type Script and Knockout.</h2>
<input data-bind="value: firstname" />
<input data-bind="value: lastname" />
<div data-bind="text: fullname"></div>
4b9b3361

Ответ 1

Рекомендация - использовать функции стрелок для вычисления. Это также даст вам желаемый интеллект:

this.fullname = ko.computed({
        owner: this,
        read:  () => {
            return this.firstname() + " " + this.lastname();
        }
    });

В основном, что фиксирует this, используя закрытие, поэтому не имеет значения, кто вызывает функцию. this будет продолжать означать PersonViewModel вместо any. Подробнее: http://basarat.github.io/TypeScriptDeepDive/#/this

Попробуйте intellisense в TypeScript Игровая площадка. Вы должны получить intellisense, когда вы нажимаете this.