2017-07-31 9 views
1

Moment.jsを使用して、TypeScriptプロジェクトのdatetimeオブジェクトを処理しています。私は、タイプがMomentの値を持つキーを持つオブジェクト型を定義したいと思います。外部型をグローバル.dtsファイルにインポートする方法

ただし、グローバル定義ファイル(test.d.ts)に以下を追加すると、そのファイル内のどのインターフェイスもプロジェクトのどこにも見つかりません。

import { Moment } from 'moment'; 

interface Test { 
    date: Moment; 
} 

私は.ts.tsxファイル内のインターフェイスを使用しようとすると、私は、この活字体のエラーを取得:

[at-loader] ./src/<examplefilename>.tsx:91:26 
    TS2304: Cannot find name 'Test'. 

どちらVSCodeの活字体のエラーチェックもTSLintは、コードの問題を示しています。

グローバル定義ファイルで使用する外部モジュールからタイプをインポートするにはどうすればよいですか?

+0

私はtsconfigファイルをチェックします。コンパイラのオプション - typerootsでは@typesパスと入力するパスを – kimy82

+0

@ kimy82にする必要がありますが、問題はないと思います。プロジェクト全体を通して瞬時にインポートすることができますが、プロジェクトの '.d.ts'定義ファイルでインポートすることができません。これは、プロジェクトで' Moment'タイプを使用するグローバルタイプを定義するためです。残りの '.d.ts'ファイルは設定なしで見つけられ、外部のタイプをインポートしようとしない限り動作します。 – keawade

+0

グローバルな 'd.ts'ファイルも' tsconfig.json'プロジェクトに含まれていますか? –

答えて

2

ファイルの最上位レベルがimportまたはexportの場合、モジュールとみなされます。関心のあるすべてのコンテンツ(タイプ、インターフェースなど)は、そのファイルで明示的にエクスポートし、そのタイプを必要とするファイルにインポートする必要があります。

// types.d.ts 
import { Thingy } from 'sick-lib'; 

export declare interface IInterface { 
    foo: any; 
    bar: any; 
    baz: Thingy; 
} 

// main.ts 
import { IInterface } from 'types'; 

const xyz: IInterface = { 
    foo: true, 
    bar: false 
}; 
+0

問題が解決しました。ありがとうございます! 私は1つだけの事をインポートしたので、私のすべてのインターフェースを手作業でエクスポートしなければならないのはちょっとイライラしています。 – keawade

関連する問題