【问题标题】:How to get rid of $injector type errors in TypeScript?如何摆脱 TypeScript 中的 $injector 类型错误?
【发布时间】:2016-06-13 16:31:20
【问题描述】:

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

this.$injector.get('$state').current.name !== 'login'

但是,它给我一个错误:

错误 TS2339:类型“{}”上不存在属性“当前”。

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


更新

我试过了:

export namespace NewInjector extends angular.auto.IInjectorService {
    current: any;
};

没有任何成功。

【问题讨论】:

标签: angularjs typescript angular-ui-router


【解决方案1】:

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

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

另一种表示法

var state = this.$injector.get<ng.ui.IStateService>('$state');

以及IInjectorService 的快速概览

interface IInjectorService {
    ...
    get<T>(name: string, caller?: string): T;
    ...

【讨论】:

  • 我不知道我可以使用这种语法。真是太甜了!谢谢!
猜你喜欢
  • 2019-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-07
  • 1970-01-01
相关资源
最近更新 更多