Gibt es ein Beispiel für die Verwendung von TypeScript mit KnockoutJS? Ich bin nur neugierig, wie sie zusammenarbeiten würden.
Bearbeiten
Hier ist was ich habe, scheint zu funktionieren
declare var ko: any;
declare var $: any;
class ViewModel {
x = ko.observable(10);
y = ko.observable(10);
}
$(() => {
ko.applyBindings(new ViewModel());
});
Dies führt zu folgendem Javascript:
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
quelle
quelle
ko.observable<number>(10)
. Ich schrieb einen Blogpost mit einigen detaillierteren Informationen: ideasof.andersaberg.com/idea/12/…Antworten:
Schauen Sie sich DefinitelyTyped an .
"Repository für TypeScript-Typdefinitionen für beliebte JavaScript-Bibliotheken"
quelle
/// <reference path="knockout-2.2.d.ts" />
oben in Ihre .ts-Datei einzufügen, damit die Definitionen übernommen werden.Ich habe diese kleine Schnittstelle erstellt, um statische Typen für Knockout zu erhalten:
Fügen Sie es in "Knockout.d.ts" ein und verweisen Sie es dann aus Ihren eigenen Dateien. Wie Sie sehen können, würde es stark von Generika profitieren (die gemäß den Spezifikationen kommen).
Ich habe nur ein paar Schnittstellen für ko.observable () erstellt, aber ko.computed () und ko.observableArray () können problemlos im selben Muster hinzugefügt werden. Update: Ich habe die Signaturen für subscribe () korrigiert und Beispiele für computed () und ObservableArray () hinzugefügt.
Fügen Sie dies oben hinzu, um es aus Ihrer eigenen Datei zu verwenden:
quelle
x = 'hello'
in JS sagen , wissen wir nicht, ob Sie es später in Ihrem Code sagen wolltenx = 34
. Hance können wir nichts über die Art von x schließen.Versuchen Sie meine Realisierung von TypeScript-Schnittstellendeklarationen (mit einfachem Beispiel)
https://github.com/sv01a/TypeScript-Knockoutjs
quelle
An der Art und Weise, wie Knockout-Bindungen im Markup deklariert werden, würde sich nichts ändern. Wir würden jedoch die Intellisense-Güte erhalten, sobald die Schnittstellen für die Knockout-Bibliothek geschrieben sind. In dieser Hinsicht würde es genauso funktionieren wie das jquery-Beispiel , das eine Typoskriptdatei enthält, die Schnittstellen für die meisten jQuery-APIs enthält .
Ich denke, wenn Sie die beiden Variablendeklarationen für ko und $ loswerden, wird Ihr Code funktionieren. Diese verbergen die tatsächlichen Ko- und $ -Variablen, die beim Laden der Knockout- und JQuery-Skripte erstellt wurden.
Ich musste dies tun, um das Visual Studio-Vorlagenprojekt auf Knockout zu portieren:
app.ts:
default.htm:
quelle
Ok, verwenden Sie einfach den folgenden Befehl, um die Knockout-Typen oder tds zu importieren.
Dadurch wird ein @ types-Verzeichnis im Verzeichnis node_modules Ihres Projekts erstellt, und die Definitionsdatei für den Index-Knockout-Typ befindet sich in einem Verzeichnis mit dem Namen knockout. Als nächstes durch einen dreifachen Schrägstrich auf die Typendatei. Dies bietet großartige IDE- und TypeScript-Funktionen.
Verwenden Sie zum Schluss einfach eine declare-Anweisung, um die ko-Variable in den Gültigkeitsbereich zu bringen. Dies ist stark typisiert, also hallo Intellisense.
Jetzt können Sie KO genau wie in Ihren Javascript-Dateien verwenden.
Hoffe das hilft.
quelle
Ich verwende https://www.nuget.org/packages/knockout.editables.TypeScript.DefinitelyTyped/ und es hat alle Schnittstellen für Knockout.
quelle