2017-02-17 22 views
2

リーフレットとプラグインをIonic 2プロジェクト。リーフレット自体とleaflet-path-transformプラグインをインストールしてインポートしました。また、the Leaflet type declarationがDefinatelyTypedに含まれています。タイプ宣言を無視するためにdeclare var L: any;を追加すると、コードはすべて機能します。タイプXの引数はタイプYのパラメータに割り当てられません。オブジェクトリテラルは既知のプロパティのみを指定することができ、XはタイプYに存在しません

これは、ページコントローラ(home.ts)の重要な部分である:

var polyline = new L.Polyline(
    L.GeoJSON.coordsToLatLngs([ 
    [114.14314270019531, 22.49479484975443], 
    [114.21798706054688, 22.524608511026262], 
    [114.20768737792969, 22.524608511026262], 
    [114.20768737792969, 22.536024805886974] 
    ]), { 
    weight: 15, 
    draggable: true, 
    transform: true 
    }) 
    .bindPopup("L.Polyline") 
    .addTo(map); 
    polyline.transform.enable(); 

draggabletransformは、基本的なリーフレットで有効なオプションではありません(でも.transformである)ので、私は型宣言ファイルを書きましたPROJECT_DIR\node_modules\@types\leaflet-path-transform\index.d.tsで定義します。これまでに書いたことは、the type declaration for leaflet-editableに基づいています。そのプラグインはL.Mapオブジェクトを作成するときに新しいMapOptionsを許可するからです。

/// <reference types="leaflet" /> 

declare namespace L { 

    export interface Polyline { 
     draggable: boolean; 
    } 

    namespace Polyline { 
     export interface PolylineOptions { 
      draggable: boolean; 
     } 
    } 

} 

これは、これまでのところ、最初のオプションを扱いますが、それは活字体のエラーをクリアすることに成功していない:

Typescript Error 
Argument of type '{ weight: number; draggable: boolean; }' is not assignable to parameter of type 'PolylineOptions'. Object literal may only specify known properties, and 'draggable' does not exist in type 'PolylineOptions'. 

誰かが私が私がここで間違ってやっているかを把握助けることができますか?最初は、新しい型宣言ファイルは単純に無視されていると思っていましたが、誤植を残すと新しいエラーが発生するため、効果があるようです。

それが助け場合は、ここで私が働いている環境です:

  • イオン性フレームワーク:2.0.0
  • イオンネイティブ:2.4.1
  • イオンのAppスクリプト:1.0。 0
  • 角度コア:2.2.1
  • 角度コンパイラCLI:2.2.1
  • ノード:6.9.4
  • OSプラットフォーム:Windows 10
  • ナビゲータプラットフォーム:Win32
  • ユーザエージェント:Mozilla/5.0(Windows NT 10.0; WOW64)のAppleWebKit/537.36(KHTML、のGecko)クローム/ 56.0.2924.87 Safariのように/ 537.36
+0

それを稼働させましたか? – ackuser

+0

まだありません。私はちょうど適切な型宣言の代わりに "any"修飾子を使用しています。 – carpiediem

答えて

0

あなたはこのポストそれが理由を見つけるために、スーパー解決するために簡単ですが、難しいhttp://yunkus.com/angular-error-object-literal-may-only-specify-known-properties/ を読むことができます。 "任意"を使用しているが、一方向ですが、それは最高の解決策ではありません。カスタムクラスを使用して変数を正しく作成したいからです。幸いにも、答えはそのポストにalredyがあります。あなたはそれを読むことができますが、ポストはchinese.whishingによって書くことができますそれを得ることができます。