Existe-t-il un exemple d'utilisation de TypeScript avec KnockoutJS? Je suis juste curieux de savoir comment ils travailleraient ensemble?
Éditer
Voici ce que j'ai, semble fonctionner
declare var ko: any;
declare var $: any;
class ViewModel {
x = ko.observable(10);
y = ko.observable(10);
}
$(() => {
ko.applyBindings(new ViewModel());
});
Cela génère le Javascript suivant:
var ViewModel = (function () {
function ViewModel() {
this.x = ko.observable(10);
this.y = ko.observable(10);
}
return ViewModel;
})();
$(function () {
ko.applyBindings(new ViewModel());
});
knockout.js
typescript
CallumVass
la source
la source
ko.observable<number>(10)
. J'ai écrit un article de blog avec des informations plus détaillées: ideasof.andersaberg.com/idea/12/…Réponses:
Regardez DefinatelyTyped .
«Référentiel de définitions de type TypeScript pour les bibliothèques JavaScript populaires»
la source
/// <reference path="knockout-2.2.d.ts" />
en haut de votre fichier .ts pour qu'il récupère les définitions.J'ai créé cette petite interface pour obtenir des types statiques pour Knockout:
Mettez-le dans "Knockout.d.ts" puis référencez-le à partir de vos propres fichiers. Comme vous pouvez le voir, il bénéficierait grandement des génériques (qui arrivent selon les spécifications).
Je n'ai fait que quelques interfaces pour ko.observable (), mais ko.computed () et ko.observableArray () peuvent être facilement ajoutés dans le même modèle. Mise à jour: J'ai corrigé les signatures pour subscribe () et ajouté des exemples de computed () et observableArray ().
Pour utiliser à partir de votre propre fichier, ajoutez ceci en haut:
la source
x = 'hello'
dans JS, nous ne savons pas si vous aviez l'intention de dire quelque part plus tard dans votre codex = 34
. Hance nous ne pouvons rien déduire du type de x.Essayez ma réalisation des déclarations d'interface TypeScript (avec un exemple simple)
https://github.com/sv01a/TypeScript-Knockoutjs
la source
Rien ne changerait en ce qui concerne la façon dont les liaisons knockout sont déclarées dans le balisage, mais nous obtiendrions la bonté intellisense une fois que les interfaces sont écrites pour la bibliothèque knockout. À cet égard, cela fonctionnerait exactement comme l' exemple jquery , qui a un fichier dactylographié contenant des interfaces pour la plupart des API jQuery .
Je pense que si vous vous débarrassez des deux déclarations de variables pour ko et $, votre code fonctionnera. Celles-ci masquent les variables ko et $ réelles qui ont été créées lors du chargement des scripts knockout et jquery.
J'ai dû faire cela pour porter le projet de modèle de studio visuel à knockout:
app.ts:
default.htm:
la source
Ok, utilisez simplement la commande suivante pour importer les types de knockout ou tds.
Cela créera un répertoire @types dans le répertoire node_modules de vos projets et le fichier de définition du type de knockout d'index sera dans un répertoire nommé knockout. Ensuite, par une référence triple barre oblique au fichier de types. Cela donnera d'excellentes fonctionnalités IDE et TypeScript.
Enfin, utilisez simplement une instruction declare pour mettre la variable ko dans la portée. Ceci est fortement typé alors bonjour intellisense.
Alors maintenant, vous pouvez utiliser KO comme dans vos fichiers javascript.
J'espère que cela t'aides.
la source
J'utilise https://www.nuget.org/packages/knockout.editables.TypeScript.DefinatelyTyped/ et il a toutes les interfaces pour Knockout.
la source