2017-01-19 65 views
0

你能告诉我为什么,当我在Visual Studio中用TypeScript编码AngularJS时,我不能编译这段代码:?我是否使用正确的类型ng.route.IRouteParamsService for $ routeParams ???

var param = $ routeParams.id不会编译,但它是编写代码的有效方法。 如果我不为$ routeParams声明类型,那么没有编译器抱怨,并且一切正常。 对我没有多大意义。请指教。

List item

回答

0

我没有在我面前ngRoute分型项目,但你有没有试过$routeParams['id']

angular-route typings show它是一个字符串索引对象。

namespace route { 
     interface IRouteParamsService { 
      [key: string]: any; 
     } 
} 

由于分型不能提前知道的时候,你会有什么PARAMS,这是最好的方式(不包括仿制药,这将是在这种情况下很麻烦),以允许动态对象。

+0

是的,索引器工作得很好。如果我不提供* ng.route.IRouteParamsService *类型,如果我删除类型,我可以直接使用* $ routeParams.id * – monstro

+0

@monstro,如果你有一点奇怪的话,访问参数的名字* $ routeParams.id *不要输入'$ routeParams'作为'ng.route.IRouteParamsService',那么你的Typescript项目(可能取决于'tsconfig.json')将其视为类型'any'。既然它是'任何',它可以有任何形式,而Typescript可以让你像这样对待它。 – seangwright

+0

是,似乎这个对象是MVC – monstro