ここに例を示します。すべてのlocalforage
パッケージのエクスポートはプライベートLocalForage
クラスのインスタンスです。それぞれのタイプは同じ名前のインターフェースを持ちますが、エクスポートされません。Typescriptでプライベートインターフェイスをインポートする
LocalForage
インターフェイスにもかかわらず、それはエクスポートされません、TypeScriptとIDE(WebStorm)は '@ types/localforage'からインポートすることを許可しているようです。しかし、このタイプは適用されません。このコード
import * as localForage from 'localforage';
/// <reference path="../../../node_modules/@types/localforage/index.d.ts"/>
var customForage: LocalForage = localForage;
customForage.setDriver('custom');
が正常setDriver
を識別しながら
Unresolved function or method setDriver()
:
import * as localForage from 'localforage';
import { LocalForage } from '@types/localforage';
var customForage: LocalForage = localForage;
customForage.setDriver('custom');
が、エラーで結果:
このコードはcustomForage.setDriver(...)
行の前に何のリンティング問題なしインポートエラーを持っていません方法。
@types
が最終的に到着したときにうれしく、index.d.ts
の相対パスを維持するのは面倒です。
この場合、インターフェイスを使用するファイルに<reference path="../../... />
を付けずに処理できますか?
質問は特定のlocalforage
パッケージに限定されませんが、問題の良い例です。
2番目のインポートと '///
Paleo
'@ type'を直接コード内にインポートする必要はありません。名前で解決されます。 tsconfig.jsonでnode_moduleが除外されていても、 '' node_modules/@ types/* ''のファイルは、デフォルトでコンパイルスコープに常に含まれます。しかし、 '@ types'機能は2016.3以降でのみサポートされているので、最新のWebStormバージョン – lena
@lena Thanksを使用する必要があります。実際、2016.3にはこの問題はなく、 '@ type'が自動的に使用されます。私はアップグレードがこの問題を解決すると思います。これはTS 2.xの通常の動作です。 – estus