2017-04-23 4 views
0

私は明らかにロダッシュを使用しているangle2アプリを持っています。しかし、親プロジェクトにアンダースコア文字列を含むアンダースコアも表示されます。タイプスクリプトのアンダースコアとロダッシュを参照する方法

これで、typescriptコンパイラはlodashのメソッドが欠けていると不平を言っています。 しかし、私は方法がアンダースコアであるので、ロダッシュに言及していません。

Property 'classify' does not exist on type 'LoDashStatic' 

どうすればこのようなエラーを抑制できますか?

+1

としてあなたタイプスクリプトファイル? – Saravana

答えて

2

を追加することを忘れないでくださいとそれに応じてアンダースコアを使用する必要があります。

サラバナの回答のように、まず@タイプ/アンダースコアパッケージをインストールしてください。

また、あなたが彼らに

npm uninstall --save @types/lodash 

npm install --save @types/underscore 

を使用していない場合は、アンダースコアを使用しながら、グローバルなレバレッジモジュールに失敗を表ししかし、@typesパッケージから直接インポートすることは正しくない使い方ですlodash種類をアンインストールする必要があります作ります。

次に、型パッケージをインストールした後にアンダースコアを参照する方法の例を示します。

ESモジュール< => CommonJS相互運用スタイル(推奨)

import _ from 'underscore'; // note the absence of @types from the path 

活字体はこのためにエラーを発生させますが、それは実行時に動作する場合は、あなたのtsconfig.jsonファイルに"allowSyntheticDefaultImports": trueを設定します。

これが実行時に失敗する場合は、他の方法のいずれかを試してみてください。

活字体CommonJS NameSpaceの相互運用スタイル(非標準)どのようにアンダースコアインポートしている

import * as _ from 'underscore'; 

活字体CommonJSスタイル(また、AMD/UMDで動作します)

import _ = require('underscore'); 
+0

非常に詳細な説明に感謝します。ポイントは、自分のモジュール内でアンダースコアをインポートしたくないということです。すでに別のパッケージに含まれています。角度を持ってインポートすることで、2つのインポートされたアンダースコアライブラリで終わるでしょう。だからちょうどこのようなコードの補完と参照を取得する: "インポート@ UnderscoreStatic}から" @種類/アンダースコア ";"私のニーズに合っている。 – dc10

+0

_ "それを角度でインポートすると、2つのインポートされたアンダースコアライブラリで終わるでしょうか?"いいえ、他のパッケージが正しくインポートするのではなくグローバルとしてそれを含む場合に限ります。 –

+0

しかし、あなたが 'declare const::UnderscoreStatic;'の解決策を使っても、あなたは '@ types'からインポートすることを待っているバグです。 –

1

@types/underscoreをインストールして、使用したいメソッドをインポートしてもエラーは発生しません。あなたはモジュールを使用しているので、あなたがローダーまたはそれらを扱うパッケージャのいずれかを持っているあなたは角度を使用しているので、私はあなたがモジュールに

を使用していると仮定tsconfig.jsonファイル内のタイプに

関連する問題