Używaliśmy TypeScript 2.2. Po aktualizacji do 2.4, możemy teraz uzyskać to na kompilacji:Po uaktualnieniu TypeScript, rejestracja kontrolera Angular nie kompiluje się teraz
błąd TS2345: argument typu 'typeof TopMenuController' nie jest przypisane do parametru typu 'iniekcyjne <IControllerConstructor>'. Typ 'typeof TopMenuController' nie można przypisać do '(string | (new (... args: any []) = > IController) | ((... args: any []) = > void | IController)) [] ". Brak właściwości "push" w typie "typeof TopMenuController".
ts \ controllers \ TopMenuController.ts (2,18): błąd TS2559: Typ "TopMenuController" nie ma wspólnych cech z typem "IController".
Nie rozumiem pierwszego błędu i Googling było trudne. Proszę tylko o pomoc przy pierwszym błędzie. (Otrzymuję drugi błąd z powodu moich prób rozwiązania pierwszego). Oto kontroler:
export class TopMenuController implements angular.IController {
static $inject = ["$templateCache", "Restangular"];
constructor(
private readonly $templateCache: angular.ITemplateCacheService,
private readonly restangular: Restangular.IElement) {
}
}
I tak się rejestruje.
Jak zmodyfikować moją definicję kontrolera lub jego rejestrację, aby nasz kod znów się kompilował?
(Wyjmowanie implements angular.IController
nieco usuwa drugi błąd, ale pierwsze szczątki)
Edit: znalazłem this bug
można poprawnie zidentyfikować problem. Dodanie '$ onInit =() => {};' do mojego kontrolera sprawiło, że wszystkie moje problemy zniknęły. – Amy
Czy możesz zaktualizować odpowiedź za pomocą rozwiązania? Gdzie powinienem umieścić $ onInit =() => {}; –
@FrankModica Tnx! –