在angular1项目中重载$ injector.get的typescript接口定义
问题描述:
我正在将一个angular1项目从javascript迁移到typescript,并且想要添加到overloaded $injector.get method以包含项目自己的注入类型。我在合并界面上阅读this typescript doc。我加入导入d.ts文件这样的:
import TrendDisplayService from 'services/TrendDisplayService';
declare namespace angular {
export module ng.auto {
export interface IInjectorService {
get(name: 'trendDisplayService'): TrendDisplayService
}
}
}
但是我做了以下时,我仍然看到了“不可转让”类型的错误:
let trend:TrendDisplayService = $injector.get('trendDisplayService');
有什么想法?
答
在声明模块中应该是auto而不是ng.auto。
declare namespace angular {
export module auto {
export interface IInjectorService {
get(name: 'trendDisplayService'): TrendDisplayService
}
}
}
呃感谢您的纠正。不幸的是,这仍然在我的项目中不起作用,但我强烈怀疑它是由于一些tsconfig问题引起的......如果我将更正后的代码片段直接放在我正在执行的文件中,应该这样工作:let trend:TrendDisplayService = $ injector.get( 'trendDisplayService');'?或者这是不允许的? – AndyPerlitch
是的,这将起作用。你可以把它放在你的项目的任何地方。 –