Właśnie zmodernizowane maszynopis z v2.3 do v2.4 i teraz daje mi błąd na liniach knockout.validation.d.ts:błąd kompilatora maszynopisu? knockout.validation.d.ts nie kompiluje już
interface KnockoutSubscribableFunctions<T> {
isValid: KnockoutComputed<boolean>;
isValidating: KnockoutObservable<boolean>;
rules: KnockoutObservableArray<KnockoutValidationRule>;
isModified: KnockoutObservable<boolean>;
error: KnockoutComputed<string>;
setError(error: string): void;
clearError(): void;
}
Tutaj nokaut.validation próbuje pokazać, że KnockoutSubscribableFunctions ma teraz dodatkowych członków. Oto definicja tego interfejsu w knockout.d.ts:
interface KnockoutSubscribableFunctions<T> {
[key: string]: KnockoutBindingHandler;
notifySubscribers(valueToWrite?: T, event?: string): void;
}
kompilator teraz narzeka, że:
Własność „isValid” typu „KnockoutComputed” nie jest przypisane do indeksu string „KnockoutBindingHandler” .
Nie rozumiem, dlaczego nie widzi te nowe wartości jako nowe właściwości w interfejsie? dlaczego próbuje powiedzieć, że muszą mapować na podpisy indeksu? docs wydaje się wskazywać, że możesz mieć podpis indeksu i inne właściwości w tym samym interfejsie.
Przyjąłem wstępną definicję interfejsu do placu zabaw, a nawet skarżyłem się, że funkcja notifySubscribers nie jest przypisywana do KnockoutBindingHandler.
Z nowym kompilatorem, w jaki sposób można skompilować ten kod?
na razie istnieje metoda brutalnej siły, aby to skompilować. Ja zmieniając definicję knockout.d.ts być:
interface KnockoutSubscribableFunctions<T> {
[key: string]: any;//KnockoutBindingHandler;
notifySubscribers(valueToWrite?: T, event?: string): void;
}
Występuje błąd w samym oryginalnym interfejsie? Czy jest więcej kodu? Nie rozumiem, dlaczego dostałeś błąd, chyba że próbujesz przypisać coś do typu 'KnockoutSubscribableFunctions'. –
Kompilator zgłasza błąd na linii w knockout.d.ts, mimo że narzeka na członków zdefiniowanych w nokaut.validation.d.ts. Wygląda na to, że nie ma to nic wspólnego z moim kodem. Zobaczę, jak utworzyć zupełnie nowy projekt, który obejmuje tylko te dwa pliki .d.ts. Ale mam wrażenie, że samo posiadanie tych dwóch plików razem z niczym innym da mi błąd. –
Aha i gdyby nie było jasne, to skompilowane dobrze w wersji 2.3 kompilatora. Właśnie zaktualizowałem do wersji 2.4.1 i otrzymałem ten błąd podczas kompilowania tego samego projektu bez wprowadzania żadnych zmian w projekcie. –