2017-01-19 3 views
0

Visual StudioでTypeScriptを使ってAngularJSをコーディングすると、このコードをコンパイルすることはできません。正しいタイプを使用していますかng.route.IRouteParamsService$ 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 *という名前でパラメータにアクセスするのがちょっと変わってしまいます。タイプを削除すると、* $ routeParams.id *を直接使うことができます – monstro

+0

@monstro '$ routeParams'を' ng.route.IRouteParamsService'とタイプしないと、Typescriptプロジェクトは(おそらく 'tsconfig.json'に依存します)、' any'型として扱われます。それは 'any'なので、どんな形式でも使うことができ、Typescriptはそれをそのまま扱うことができます。 – seangwright

+0

はい、それはこのオブジェクトはMVCの動的ViewBagに似ているようです – monstro

関連する問題