如何摆脱TypeScript中的$ injector类型错误?

uks*_*ksz 3 angularjs typescript angular-ui-router

我的AngularJS代码中有以下内容:

this.$injector.get('$state').current.name !== 'login'
Run Code Online (Sandbox Code Playgroud)

但是,它给我一个错误:

错误TS2339:类型"{}"上不存在属性"当前".

你知道如何解决这个问题吗?


UPDATE

我试过这个:

export namespace NewInjector extends angular.auto.IInjectorService {
    current: any;
};
Run Code Online (Sandbox Code Playgroud)

没有任何成功.

Rad*_*ler 6

get()方法返回的值$injector是任何..没有current属性...所以我们只需要断言编译器,我们知道将返回什么(而不是any)

var state = this.$injector.get('$state') as ng.ui.IStateService;
var isNotLogin = state.current.name !== "login";
...
Run Code Online (Sandbox Code Playgroud)

另一种表示法

var state = this.$injector.get<ng.ui.IStateService>('$state');
Run Code Online (Sandbox Code Playgroud)

并快速概述了 IInjectorService

interface IInjectorService {
    ...
    get<T>(name: string, caller?: string): T;
    ...
Run Code Online (Sandbox Code Playgroud)