Czy jest jakiś przykład użycia TypeScript z KnockoutJS? Jestem po prostu ciekawy, jak by razem pracowali?
Edytować
Oto, co mam, wydaje się działać
declare var ko: any;
declare var $: any;
class ViewModel {
x = ko.observable(10);
y = ko.observable(10);
}
$(() => {
ko.applyBindings(new ViewModel());
});
Generuje się to w następującym 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
źródło
źródło
ko.observable<number>(10)
. Napisałem post na blogu z bardziej szczegółowymi informacjami: ideasof.andersaberg.com/idea/12/…Odpowiedzi:
Spójrz na DefinitelyTyped .
„Repozytorium definicji typów TypeScript dla popularnych bibliotek JavaScript”
źródło
/// <reference path="knockout-2.2.d.ts" />
na początku pliku .ts, aby pobierał definicje.Zrobiłem ten mały interfejs, aby uzyskać statyczne typy dla Knockout:
Umieść go w „Knockout.d.ts”, a następnie odwołaj do niego z własnych plików. Jak widać, bardzo skorzystałby na generycznych (które są dostarczane zgodnie ze specyfikacjami).
Zrobiłem tylko kilka interfejsów dla ko.observable (), ale ko.computed () i ko.observableArray () można łatwo dodać w tym samym wzorcu. Aktualizacja: Poprawiłem podpisy dla subscribe () i dodałem przykłady computed () i obserableArray ().
Aby użyć z własnego pliku, dodaj to u góry:
źródło
x = 'hello'
w JS, nie wiemy, czy gdzieś później w swoim kodzie zamierzałeś to powiedziećx = 34
. Nie możemy jednak niczego wywnioskować o typie x.Wypróbuj moją realizację deklaracji interfejsu TypeScript (z prostym przykładem)
https://github.com/sv01a/TypeScript-Knockoutjs
źródło
Nic nie zmieniłoby się pod względem sposobu deklarowania powiązań typu knockout w znacznikach, jednak otrzymalibyśmy inteligencję po napisaniu interfejsów dla biblioteki knockout. Pod tym względem działałby tak jak przykład jQuery , który ma plik maszynopisu zawierający interfejsy dla większości api jQuery .
Myślę, że jeśli pozbędziesz się dwóch deklaracji zmiennych dla ko i $, twój kod zadziała. Ukrywają one rzeczywiste zmienne ko i $, które zostały utworzone podczas ładowania skryptów knockout i jquery.
Musiałem to zrobić, aby przenieść projekt szablonu programu Visual Studio na nokaut:
app.ts:
default.htm:
źródło
Ok, więc po prostu użyj następującego polecenia, aby zaimportować typy wybicia lub tds.
Spowoduje to utworzenie katalogu @types w katalogu projektów node_modules, a plik definicji typu wycięcia indeksu będzie znajdować się w katalogu o nazwie knockout. Następnie poprzez odwołanie z potrójnym ukośnikiem do pliku types. Zapewni to świetne funkcje IDE i TypeScript.
Na koniec użyj po prostu deklaracji, aby przenieść zmienną ko do zakresu. To jest mocno wpisane na maszynie, więc cześć, inteligencja.
Więc teraz możesz używać KO tak jak w swoich plikach javascript.
Mam nadzieję że to pomoże.
źródło
Używam https://www.nuget.org/packages/knockout.editables.TypeScript.DefinitelyTyped/ i ma wszystkie interfejsy dla Knockout.
źródło