2016-12-02 11 views
0

ここに例を示します。すべての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パッケージに限定されませんが、問題の良い例です。

+0

2番目のインポートと '/// Paleo

+1

'@ type'を直接コード内にインポートする必要はありません。名前で解決されます。 tsconfig.jsonでnode_moduleが除外されていても、 '' node_modules/@ types/* ''のファイルは、デフォルトでコンパイルスコープに常に含まれます。しかし、 '@ types'機能は2016.3以降でのみサポートされているので、最新のWebStormバージョン – lena

+0

@lena Thanksを使用する必要があります。実際、2016.3にはこの問題はなく、 '@ type'が自動的に使用されます。私はアップグレードがこの問題を解決すると思います。これはTS 2.xの通常の動作です。 – estus

答えて

1

@typesで読んだことや日常的な仕事から、@typesのインポートや参照は必要ありません。 @typesは名前で自動的に解決されます。したがって、モジュールlocalforageの場合、@types localforageがロードされます。 短い要約はここに提示された:https://blogs.msdn.microsoft.com/typescript/2016/06/15/the-future-of-declaration-files/

webstormまたはphpstromを使用しているとき、私はあなたがtypescriptですのバージョンでビルドしていないあなたのプロジェクトのためにインストールされているものを使用しないこと、であるかもしれない問題を推測します。カスタムタイスクリプトのバージョンを使用して、node_modulesにインストールしたものをロードしてみてください。 TypeScript 2.0を使用していることを確認してください。

+0

ありがとう、これは本当のようです、以前のIDEバージョンはTS 1.xを使用しています。 – estus

関連する問題