2017-11-20 37 views
0

フォルダには、名前空間に入れた列挙型の大きなリストがあります。列挙型のsrc /タイピング、カスタムフォルダにTypeScriptで名前空間Bの名前空間Aをどのように参照していますか?

Enums.ts

namespace Enums { 

    const enum MethodType { 
     Equal, 
     NotEqual, 
     ... 
    } 

} 

、私はそれらの列挙型を使用する(特に)いくつかのインタフェースを持っています。私はDTOの名前空間に私の列挙型の名前空間を参照することが分かっ

dto.d.ts

/// <reference path="../models/Enums" /> 

namespace DTO { 

    interface IRule { 
     MethodType: Enums.MethodType 
    } 

} 

唯一の方法は、/// <reference .../>ラインを使用することです。

は、それはまだ活字体のV2.6との良好な慣行の一部ですか? 別の方法がありますか? (をインポートしようとしましたが、名前空間の代わりにモジュールが必要です)

ありがとうございました! Enumsが制限された単語に似ているので、名前を変更した方がよい

答えて

0

export namespace Enums { 
 
    const enum MethodType { 
 
     Equal, 
 
     NotEqual, 
 
     ... 
 
    } 
 

 
} 
 

 

 
/*-----*/ 
 

 
import * as Enums from './Enums'

思い出してくれる。

これが役に立った。

+0

1.はい、ありがとうございました! 2. Enums(このケースではパスカルの場合)は制限された単語ですか? – kevinob

+0

時々オブジェクト型を参照するには、パスカルの場合を使用する必要があります。制限されたものと類似または同等の単語を使用しないようにするには、「最良の実践」です。しかし、@Fentonの実装は私のこれよりも適しているので、私は彼の1つを使用することをお勧めします! –

1

あなたのコードを管理するための最良の方法は、モジュールではなく、名前空間です。念頭に置くべきことの1つは、it is best not to mix modules and namespaces in TypeScriptです。

モジュールは、importまたはexportのいずれかの形式のファイルです。ここで

Enums.tsモジュールです:

export const enum MethodType { 
    Equal, 
    NotEqual, 
} 

そして、実際に使用するMethodType列挙型をインポートする例:

import { MethodType } from '../models/Enums'; 

interface IRule { 
    MethodType: MethodType 
} 

に応じての用心が、あなたはまた、「ロット」インポートすることができますあなたが必要としないもの:

import * as Enums from '../models/Enums'; 

interface IRule { 
    MethodType: Enums.MethodType 
} 

Ideall yでは、モジュールローダーでコードを読み込むこともできますが、バンドルを継続したい場合は、ツールを使用してロット全体を1つのファイルにまとめることもできます。

関連する問題