Объявление нокаута, вычисленное в 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>
Ответы
Ответ 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.