knockout.js - Declarar un knockout computable observable en mecanografiado
typescript (1)
Soy nuevo en mecanografiar y me gustaría combinarlo con la bondad de los nocauts. Tengo un observable computarizado, que actualmente funciona, pero quiero saber si es así o si existe una mejor manera.
Estoy usando el archivo de definición de nocaut de nu-get . En él hay 4 definiciones de KnockoutComputed (x).
- KnockoutComputed
- KnockoutComputedDefine
- KnockoutComputedFunctions
- KnockoutComputed Static
Me gusta el método {} de declarar observables y me gustaría mantener esto. En resumen, este es el método correcto para declarar observables o hay una forma alternativa (tal vez con intlisense en la función)
Estoy usando el primero así:
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();
}
});
}
}
con el fragmento de código html de:
<h2>Type Script and Knockout.</h2>
<input data-bind="value: firstname" />
<input data-bind="value: lastname" />
<div data-bind="text: fullname"></div>
La recomendación es usar funciones de flecha para computar. También te dará la inteligencia deseada:
this.fullname = ko.computed({
owner: this,
read: () => {
return this.firstname() + " " + this.lastname();
}
});
Básicamente, eso lo captura utilizando el cierre, por lo que no importa quién devuelva la función. this
continuará significando PersonViewModel
lugar de any
. Más: http://basarat.github.io/TypeScriptDeepDive/#/this
Pruebe el intellisense en TypeScript Playground . Debes obtener intellisense cuando presionas this.