2017-01-16 6 views
0

異なるディレクトリにいくつかのテンプレートがあります - それぞれのインターフェイスを定義しているので、TypeScriptコードで参照しているものがテンプレートで使用できるようになります。インポートされたインターフェイスをTypeScriptにエクスポートする

各インターフェイスを定義し、すべてのインターフェイスを1つのファイルにまとめてインポートすることができます(そのファイルをインポートするだけで、使用可能なインターフェイスが表示されます)。

しかし、私はこれを行うのに苦労しています。私は現在持っている:

login/interface

export interface Index { 
    error: string; 
    value: string; 
} 

interfaces.ts

import * as login from './login/interface'; 
export let View = { 
    Login: login 
}; 

login.ts

import * as I from './interface'; 
... 
let viewOutput: I.View.Login.Index = { 
    ... 
}; 

での結果:

エラーTS2694:名前空間 '' ...インターフェース ''にエクスポートされたメンバー 'ビュー'がありません。

私は単純な変数としてI.View.Login.Indexにアクセスしようとした場合しかし、その後、私が取得:

プロパティ「インデックス」「『...インターフェイス』 typeof演算」タイプに存在しません。

インターフェイスは実際にはタイプではありませんが、これまでにはI.View.Loginにアクセスできました。

ここで私が間違っているか何かを理解していない私は恐れています。どんな助けでも大歓迎です!

答えて

3

あなたはre-exportそうのようにすることができます

// interfaces.ts 
export * from './login/interface'; 
export * from './something/interface'; 

そして:

// login.ts 
import * as I from './interface'; 
let viewOutput: I.Index = { ... } 

別のオプションは次のとおりです。その後、

import * as login from './login/interface'; 
export { login as Login }; 

そして:

// login.ts 
let viewOutput: I.Login.Index = { ... } 
+0

ありがとうございます!私はそれを 'View'オブジェクト(例えば' I.View.Login.Index')にラップするために何をするでしょうか。それは基本的には私の様々なビューインタフェースに名前を付けることを可能にし、そのための構文を理解できないようです。 –

+0

あなたは 'export ='を使ってそれを行うことができるかもしれませんが、私はそれが良い考えだとは思わない –

関連する問題