2017-11-23 14 views
-2

私は、私のJavascriptクラス内で定義されているメソッドを呼び出すTypescriptクラスclass.component.tsを持っています。このJavascriptクラスは、/assets/js/*initlibrary.js*内にあります。このjavascriptライブラリは、プロジェクトの初期化時に自動的に呼び出されます。角型2/4を使用してTypescriptクラス内で外部JavaScriptライブラリ関数を呼び出すにはどうすればよいですか?

私の質問は:どのように私はこのjavascriptライブラリに手を差し伸べて、その中の関数を呼び出すことができますか? import { Component, OnInit } from '@angular/core';のようにインポートする必要がありますか?もしそうなら、どうしたらいいですか?

ありがとうございます!

+0

最初に何かをインポートしたい場合は、javascriptファイルから何か(クラス、関数など)をエクスポートしていることを確認する必要があります。私のjavascriptライブラリメソッドの –

+0

は 'function method(){}'のように定義されています。 – Klyner

答えて

2

角型プロジェクト内で外部ライブラリを使用する場合は、多くの要件があります。

1.アンギュラcli.json中にあなたのjavascriptライブラリ宣言します。この命令では

"scripts": [ 
    "../assets/js/yourlibrary.js" 
] 

を、あなたはtypescriptですコード内のライブラリ関数を使用することができますが、コンパイルすることができません(蒸散)。

2.

にtypescriptです定義をあなたのライブラリーの定義を作成したファイルは、.d.tsで終わる拡張子を持っています。プロジェクト内で作成し、tsconfig.jsonから参照することができます。ここで

は、私が作成したEXIFライブラリ定義の例です:

私のコードでは
/// EXIF.d.ts 

declare module EXIF { 
    interface EXIFStatic { 
     getData(img, callback): boolean; 
     getTag(img, tag): any; 
     getAllTags(img): any; 
     pretty(img): any; 
     readFromBinaryFile(file): any; 
    } 
} 

declare var EXIF: EXIF.EXIFStatic; 

declare module "EXIF" { 
    export = EXIF; 
} 

、私は次のように使用します。

EXIF.getData(IMG、コールバック);

あなたはここに多くの例を見つけることができます:https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types

3.リファレンスここではあなたのライブラリーの定義

は私tsconfig.jsonファイルの例です:

"typeRoots": [ 
    "./typings" // I have create a typings folder inside my src project folder 
], 
"types": [ 
    "EXIF" // Reference of your EXIF.d.ts inside your typings folder 
] 

定義(Visual Studioコードを使用している場合)コードを記述するときにオートコンプリート関数名を取得し、プロジェクトを作成する角度を許可します。

+0

ありがとう@ニコラス。それは私が思ったほど簡単ではありません。ステップ2では、ライブラリにあるすべてのメソッドを使用して、私のjsライブラリとまったく同じものを宣言する必要がありますか? – Klyner

+1

あなたのライブラリによって異なります。 JQueryプラグインを参照する場合は、JQueryインターフェイスに新しい関数を追加する必要があります。関数を開発した場合、クラスを宣言して各メソッドの定義を追加するだけです。 –

関連する問題