如何摆脱 TypeScript 中的 $injector 类型错误?
Posted
技术标签:
【中文标题】如何摆脱 TypeScript 中的 $injector 类型错误?【英文标题】:How to get rid of $injector type errors in TypeScript? 【发布时间】:2016-06-13 16:31:20 【问题描述】:我的 AngularJS 代码中有以下内容:
this.$injector.get('$state').current.name !== 'login'
但是,它给我一个错误:
错误 TS2339:类型“”上不存在属性“当前”。
你知道如何解决这个问题吗?
更新
我试过了:
export namespace NewInjector extends angular.auto.IInjectorService
current: any;
;
没有任何成功。
【问题讨论】:
也许您需要定义一个名为get
的函数,该函数在该接口上返回一个带有属性 current
的对象。
查看注入器的文档,get 方法应该已经返回任何内容。 definitelytyped.org/docs/oclazyload--oclazyload/interfaces/…
【参考方案1】:
$injector
的 get()
方法返回的值是 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;
...
【讨论】:
我不知道我可以使用这种语法。真是太甜了!谢谢!以上是关于如何摆脱 TypeScript 中的 $injector 类型错误?的主要内容,如果未能解决你的问题,请参考以下文章
如何摆脱“@rollup/plugin-typescript: Rollup 'sourcemap' 选项必须设置为生成源映射。”警告?
如何摆脱警告 .ts 文件是 TypeScript 编译的一部分,但未使用
什么是 Visual Studio TypeScript 虚拟项目?如果我在外部编译,我怎样才能摆脱它?
如何在 Typescript 中将 ref prop 和 useRef 与 Lottie 文件一起使用?