angularjs - Wie kann man $injector Typ-Fehler in TypeScript loswerden?
Ich habe Folgendes in meinem AngularJS-Code:
this.$injector.get('$state').current.name !== 'login'
Allerdings wirft es mir einen Fehler aus:
Fehler TS2339: Die Eigenschaft 'current' existiert nicht auf Typ '{}'.
Hast du irgendeine Idee, wie man dieses Problem lösen kann?
AKTUALISIERUNG
Ich habe dies versucht:
export namespace NewInjector extends angular.auto.IInjectorService {
current: any;
};
ohne jeglichen Erfolg.
Antwort #1
Der Wert, der von der get()-Methode des $injector zurückgegeben wird, ist any.. der keine current-Eigenschaft hat... also müssen wir nur den Compiler davon überzeugen, dass wir wissen, was zurückgegeben wird (anstatt any)
var state = this.$injector.get('$state') as ng.ui.IStateService;
var isNotLogin = state.current.name !== "login";
...
Eine andere Notation
var state = this.$injector.get<ng.ui.IStateService>('$state');
Und eine kurze Übersicht über den IInjectorService
interface IInjectorService {
...
get<T>(name: string, caller?: string): T;
...
