Ben Knockout için statik türlerini almak için bu küçük arayüz yaptı:
interface ObservableNumber {
(newValue: number): void;
(): number;
subscribe: (callback: (newValue: number) => void) => void;
}
interface ObservableString {
(newValue: string): void;
(): string;
subscribe: (callback: (newValue: string) => void) => void;
}
interface ObservableBool {
(newValue: bool): void;
(): bool;
subscribe: (callback: (newValue: bool) => void) => void;
}
interface ObservableAny {
(newValue: any): void;
(): any;
subscribe: (callback: (newValue: any) => void) => void;
}
interface ObservableStringArray {
(newValue: string[]): void;
(): string[];
remove: (value: String) => void;
removeAll: () => void;
push: (value: string) => void;
indexOf: (value: string) => number;
}
interface ObservableAnyArray {
(newValue: any[]): void;
(): any[];
remove: (value: any) => void;
removeAll: () => void;
push: (value: any) => void;
}
interface Computed {
(): any;
}
interface Knockout {
observable: {
(value: number): ObservableNumber;
(value: string): ObservableString;
(value: bool): ObservableBool;
(value: any): ObservableAny;
};
observableArray: {
(value: string[]): ObservableStringArray;
(value: any[]): ObservableAnyArray;
};
computed: {
(func: () => any): Computed;
};
}
"Knockout.d.ts" koy ve sonra kendi dosyalarından başvuru. Gördüğünüz gibi, bu (özelliklerine göre geliyor) jenerik derece yararlı olacaktır.
Sadece ko.observable () için bir kaç arayüzleri yapılmış, ancak ko.computed () ve ko.observableArray () kolaylıkla aynı desende eklenebilir. Güncelleme: Ben abone için imza sabit () ve bilgisayarlı () ve observableArray () örnekleri eklendi.
Kendi dosyadan kullanmak için, üstündeki bu ekleyin:
/// <reference path="./Knockout.d.ts" />
declare var ko: Knockout;