2016-09-04 16 views
2

私たちのアプリケーションには、3つのカテゴリに大まかに分けられるような多くのオブジェクトがあります。 'コア'、 'アプリ'、 'オブジェクト'大きなtypecript index.d.tsファイルを分割する方法

私はオンラインの基本的な活字体のチュートリアルに続いて、現在のレイアウトのこの種の持つ単一のindex.d.tsあります。しかし、原因私たちが使用する古風なソース管理に

interface AH { 

} 

declare var ah: AH; 

declare module 'ah' { 
    export = ah; 
} 

declare module ah { 

    module objects { 
     // much objects 
    } 

    module app { 
     //many app 
    } 

    module core { 
     //such core 
    } 
} 

が、それは有益であろうこの単一のファイルを、アプリケーション、コア、およびオブジェクトの3つの別々のファイルに分割し、ah.app.blah、ah.core.blah、ah.objects.blahという名前空間を持つことができます。

どうすればこの問題を解決できますか?

+1

多くのモジュール性、そのような再利用性。ワオ。 –

+0

「ah」モジュールの宣言ファイルは、index.d.tsですか?このモジュールをプロジェクトでどのように使用するかの例を挙げてください。 –

+0

プロジェクト内のオブジェクトの定義にアクセスするだけで、開発者に静的な型を提供できます。 ah.core.fileSystemServiceなどで型定義にアクセスできます。 –

答えて

1

このライブラリを別のプロジェクトで使用していない場合は、宣言モジュールは必要ありません。

  1. 輸出あなたが別々のファイルに公開し、あなたがそれらを必要なときにそれらをインポートする型宣言:あなたはここに2つのオプションがありますように

    は、それはそうです。これが最も一般的な方法であるように思われるので、外部モジュールを扱っているときにも、これは私の個人的な好みがあると思います。

    app.d.ts(〜core.d.ts、objects.d.ts)

    export interface theAppInterface {} 
    

    SRC/index.ts(使用例)

    import { theAppInterface } from '../app' 
    import { theCoreInterface } from '../core' 
    
    let appUsage: ah.app.theAppInterface 
    
  2. グローバル宣言ファイルで別々のカテゴリを宣言します。グローバル宣言ファイルはグローバル名前空間に入れられ、どこにでも別々にインポートする必要はありません。例えば。

    app.d.ts(〜core.d.ts、objects.d.ts)

    declare namespace ah { 
        namespace app { 
        interface theAppInterface {} 
        } 
    } 
    

    のsrc/index.ts

    let appUsage: ah.app.theAppInterface 
    let coreUsage: ah.core.theCoreInterface 
    
関連する問題