knockout.js typescript

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).

  1. KnockoutComputed
  2. KnockoutComputedDefine
  3. KnockoutComputedFunctions
  4. 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.