2016-05-19 10 views
0

私はこのコードをTypescriptでインターフェイスを単独でエクスポートできますか?

IDatabaseModel.ts

export interface IDatabaseModel {} 

IDatabaseModels.ts

const IDatabaseModel = require('./IDatabaseModel'); 

export interface IDatabaseModels { 
    currencies : IDatabaseModel;   
} 

そして、私はエラー

IDatabaseModels.ts: error TS2304: Cannot find name 'IDatabaseModel'. 
  • を取得するコンパイルすると、それは違法ですがありますexop Typescript(引用)でそれ自身のインタフェースですか?
  • それ以外はどうすればコードを動作させることができますか?

答えて

2

私は上記の必要な構文のようにデフォルトのエクスポートが必要です。

私はむしろ、そうのようES6であることを私の輸入を変更することができます。ファイルのみ型宣言と、それはおそらくインポートすることができ、型宣言ファイル(.d.ts)でなければなりません実際のコードが含まれている場合

import {IDatabaseModel} from './IDatabaseModel'; 
0

参照構文を使用します。それは活字体でのインターフェイスをエクスポートすることは違法ではありません

IDatabaseModel.d.ts

interface IDatabaseModel {} 

IDatabaseModels.ts

/// <reference path="./IDatabaseModel.d.ts" /> 
export interface IDatabaseModels { 
    currencies : IDatabaseModel;   
} 
+1

私はそれに反対するでしょう。 'import'はグローバルな空間を汚染しません。この参照パスを作成することで、あなたのアプリケーション内のすべてのモジュールは 'IDatabaseModel'を持ちます – drinchev

0

あなたはすでにあなたの例でこれを行っています。

インターフェイスを別のアプリケーション(別途コンパイル)で再利用するためにエクスポートする場合は、次に、そのライブラリの特定のモジュールを作成し、package.jsontypingsプロパティを指定する必要があります。

関連する問題