2016-05-16 21 views
15

私のタイスクリプトベースのプロジェクトでは、独自のファイルにいくつかのインターフェイスを定義したいので、テストのための模擬テストと模擬テストを実装します。しかし、正しい構文が何であるかはわかりません。私はインターフェイスを宣言し、それらを実装するチュートリアルをたくさん見つけましたが、インターフェイスと派生クラスの両方を、同じファイルに簡単に実装しています。これはあまり現実的ではありません。インターフェイスをエクスポートおよびインポートする正しい方法は何ですか?typescriptインターフェイスを別のファイルに宣言してインポートする方法

答えて

20

見ますあなたはそれを使いたいです。

IfcSampleInterface.ts

export interface IfcSampleInterface { 
    key: string; 
    value: string; 
} 

SampleInterface.ts

import { IfcSampleInterface } from './IfcSampleInterface.ts'; 

let sampleVar: IfcSampleInterface; 
+1

これは最初に試した構文ですが、エラーが発生します。 – snort

+1

@snortどのようなエラーが発生しているのか教えてください。 – Ajay

+0

型名はAureliaのキーとして使うことができないという問題があるようです(あるいは正しく宣言する方法がわかりません)。エラーは "名前[BTAuthService]を見つけることができません" このコードは、エラーを示します:container.registerSingleton(BTAuthService、MockAuthService);最初にvarにインターフェイスを割り当ててregisterSingletonに渡すと、エラーは発生しません。 – snort

2

定義されているファイル内のインターフェイスをエクスポートし、それらが使用されているファイルにインポートする必要があります。例については、このリンクを参照してください。

x.ts

interface X{ 
    ... 
} 
export default X 

詳細については

import X from "./x.ts" 
// You can use X now 

y.tsあなたが定義されているファイルからインターフェースをエクスポートし、どこにそれをインポートする必要がhttps://www.typescriptlang.org/docs/handbook/modules.html

5

使用の定義(d.ts)ファイルと名前空間、この方法/エクスポートモジュールをインポートする必要はありません。 DefinitelyTypedプロジェクトはguidanceであり、行う方法は莫大な数examplesです。

+0

これは正解IMOです。あなたのファイルがインターフェイスだけを定義している場合は、これが好ましい方法であり、はるかにクリーンです。 – orad

関連する問題