3

私はAngularプロジェクトで入力ファイルを使用する方法を理解しようとしています。しかし、すべてのガイドやSOの投稿は、宣言されたモジュールを入力ファイルにインポートするだけであるようです。私の場合(gridstack.js)には宣言されたモジュールはなく、インターフェースと宣言された名前空間しかありません。宣言されたモジュールのない入力ファイルは意味がありますか?

タイプの下のtsconfig.fileにgridstackを宣言しました。そして、私はできる。なしコンパイラエラーの種類IGridstackOptionsの変数を宣言しますが、私は私に言って、ランタイムエラーが発生します C:/myPath/src/app/other-route/other-route.component.ts (16,60): Cannot find name 'IGridstackOptions'.

誰も私が間違ってやっている知っていますか?また、宣言されたモジュールを持たない型指定ファイルを持つことは理にかなっていますか?はいの場合、この背後にある理由を説明できますか?

感謝:)次の2つの方法でJavaScriptライブラリを使用することができます

答えて

1

:主に、最近ほとんどの図書館までライブラリグローバルオブジェクト

  • インポートライブラリオブジェクトアップ
  • を使用して

    • 最初のアプローチを使用してグローバルオブジェクトを追加しました。たとえば、jQueryグローバルオブジェクトです。現在、ほとんどのライブラリはライブラリをUMDモジュールとしてパッケージ化しており、グローバルオブジェクトとしてのライブラリの使用や、モジュールがサポートされている環境でコードが実行されている場合はインポートとして使用できます。第二のモジュールを定義しながら、

      declare namespace NodeJS 
      declare module "buffer" 
      

      最初のものは、オブジェクト(名前空間、通常はグローバル)を定義:

      活字体は、宣言を定義するために使用できる2つの方法を定義します。 hereを参照してください。

      gridstackライブラリのためのタイピング・ファイルは、グローバルオブジェクトを定義:

      declare namespace GridStackUI 
      

      を、これは、コード内で行われているものもある。

      (function($, _) { 
      
          var scope = window; 
          ... 
      
          return scope.GridStackUI; 
      }); 
      

      そして、それは次のようにあなたのコード内で使用することができますこれは:

      declare const gridstack: GridStack; 
      

      ただし、内はgridstack.jsです電子それは次のようにモジュールサポートする環境で使用することができるので、またのUMDのモジュール定義:

      import * as gridstack from 'gridstack'; 
      

      しかしタイピングファイルには、その使用のための宣言を持っていません。

    +0

    素敵な説明@AngularInDepth!しかし、コンパイラはGridstackUIが型ウィンドウに存在しないことを私に伝えます。そして、デザイン上、窓を角張って使うのは嫌なことではないでしょうが、これはおそらく唯一の方法でしょうか? – Beese

    +0

    次の 'decl gridstackを宣言する:GridStack;'、私の答えを更新しました –

    +0

    素敵です!ちょうど私が必要なもの、非常にありがとう、あなたの答えは非常に高く評価されています:) – Beese

    関連する問題