2016-10-19 29 views
1

私はangular-cli(1.0.0-beta.10)でangle2プロジェクトに取り組んでおり、このライブラリ(https://github.com/Glench/fuzzyset.js)を使いたいと思います。私がそれをインポートしようとすると、Typescriptはそれをモジュールとして受け入れていないので、私は本当にその理由を知らない。それは私にCannot find moduleエラーを与える。Typescript:モジュール角を見つけることができません

私は私のsystem-config.tsファイル

declare module "fuzzyset" {} 

にモジュールとしてそれを宣言しようとした回避策として、私はこの

import * as FuzzySet from 'fuzzyset'; 

ように私の構成要素の一つで、それをインポートしていますし、システムのコンフィグに追加:

System.config({ 
    paths: { 
    // paths serve as alias 
    'npm:': 'vendor/' 
    }, 

    map: { 
    'fuzzyset': 'npm:fuzzyset.js/index.js', 
    }, 
    packages: cliSystemConfigPackages 
}); 

しかし、今ではCannot invoke an expression whose type lacks a call signature.

私はこれにモジュール宣言を変更し、このエラーを解決するには、次の

declare module "fuzzyset" { 
    export function FuzzySet(options?:any): any; 
} 

これは、すべてがコンパイルされているような方法で作業を行い、その後私は、次のように実行時エラーを取得しています: Browser console errors

誰も私にこれを助けることができますか?事前に 感謝:)

答えて

1

私はこの問題を解決することができます。モジュール定義の問題があり、Typescriptはそれをモジュールとして認識していませんでした。ライブラリの定義を変更することはできましたが、それは正しい方法ではありませんでした。ライブラリを変更することなく機能した最終的な解決策は、その定義をtypings.d.tsに追加することでした。あなたがコードを見たい場合:

declare module "fuzzyset" { 
    function FuzzySet(options?: FuzzySet.FuzzySetOptions) : any; 
    namespace FuzzySet { 
     interface FuzzySetOptions { 
      arr?: any; 
      useLevenshtein?: any; 
      gramSizeLower?: any; 
      gramSizeUpper?: any; 
     } 
    } 
    export = FuzzySet; 
} 
0

は、単に使用します。

app.tsで

import fuzzyset from 'fuzzyset' (app.ts) 
config.tsで

map: { 
    'fuzzyset': 'npm:fuzzyset.js/lib/fuzzyset.js', 
} 

クラス定義、@Componentで

 export class App { 

     a: any; // fuzzyset 
     printThis: array; 
     name:string; 
     constructor() { 
     // start doing fuzzy stuff 
     this.a = FuzzySet() 

     this.a.add("michael axiak"); 

     this.printThisVar = this.a.get("micael asiak"); 
     // end doing fuzzy stuff 
     this.name = 'Angular2' 
     } 
    } 

<p>{{printThisVar}}</p> 

ワーキングPlnkr here

を参照してください。とthis

+0

お返事ありがとうございます。 Angular 2を使用していますか?それは私のために働いていないので、私に 'モジュールを見つけることができません。 'を与え続けます。 – Kushina

+0

はい。角2.1.0。 config.jsを確認してください。角度/コアnpmを使用します。最新のバージョンは2.1.0です - [this](https://www.npmjs.com/package/@angular/core)を参照してください。その宣言モジュールを削除して、単に「ファジーセット」からFuzzySetをインポートしてみましたか?あなたが単純なjavascriptでエクスポートされたモジュールをインポートするのに必要以上に複雑になっているのであれば、私は恐れています。 – Mahesh

+0

答えをありがとうが、それは私のために働かなかった。 – Kushina

関連する問題