Έκανα αυτό το μικρό interface για να πάρει στατική είδη για νοκ-άουτ:
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» και στη συνέχεια αναφορά από τα δικά σας αρχεία. Όπως μπορείτε να δείτε, θα ωφεληθεί σε μεγάλο βαθμό από τα γενόσημα φάρμακα (τα οποία προέρχονται, σύμφωνα με τις προδιαγραφές).
Έκανα μόνο λίγες διεπαφές για ko.observable (), αλλά ko.computed () και ko.observableArray () μπορεί να προστεθεί εύκολα στο ίδιο μοτίβο. Ενημέρωση: Έχω καθόρισε τις υπογραφές για να εγγραφείτε () και προστέθηκε παραδείγματα υπολογίζεται () και observableArray ().
Για να χρησιμοποιήσετε από το δικό σας αρχείο, προσθέστε αυτό στην κορυφή:
/// <reference path="./Knockout.d.ts" />
declare var ko: Knockout;