2017-01-19 62 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