【发布时间】:2016-09-20 03:32:31
【问题描述】:
我知道的
当使用带有 Angular 的 UI 状态的 TypeScript 时,我可以为 UI-Router 绝对类型库提供“类型断言”。
使用它,我可以注入$state 并具有类似于以下的代码
function myCtrl($state: ng.ui.IStateService){
// Some code
}
这为我提供了$state 方法的正确自动完成/错误报告。
到目前为止,一切都很好。
问题
当我尝试访问params 的属性时,如下所示
function myCtrl($state: ng.ui.IStateService){
// Trying to access a property of $state.params
var example = $state.params.example;
}
我收到一条错误消息:
IStateParamsService 上不存在属性“示例”
因为很正确,TypeScript 不知道这个属性。
我考虑过尝试:
定义我自己的扩展ng.ui.IStateService的接口
interface IMyState extends ng.ui.IStateService{
params: {
example: string;
};
}
然后将类型设置为我的界面
function myCtrl($state: IMyState){
var example = $state.params.example;
}
这消除了错误。
$state 使用的正确类型是什么?
我应该像我的例子那样定义我自己的界面吗?
【问题讨论】:
-
一些灵感如何使用 TS 和 angularJS here
-
@RadimKöhler 谢谢。我正在使用导入/导出类等。为了这个问题,我只是尽量保持简单。不过有用的链接。
-
在你得到答案之前只是一个提示...我正在使用
class和static $inject符号...提示;) -
@RadimKöhler 我在生产代码中使用
class和static $inject表示法。但是,我仍然需要正确注释参数。我只是认为在这里使用它会增加不必要的混乱。 -
如果你能告诉我一些真实的.. 损坏的.. 代码(最好在 plunker)我会帮助你......尽我所能......换句话说...... sn-ps in你的问题我不清楚..不确定什么不起作用。我确实使用 UI-Router、TS 和 AngularJS……所以可以分享一些经验
标签: javascript angularjs typescript angular-ui-router angular-ui