2017-02-18 14 views
2

私はタイプスクリプトでノーフォンです。異なったタイプの輸入と輸出の形容詞

export default class Foo {} 
/* or */ 
class Foo {} 
export = Foo; 
/* or */ 
export class Foo { } 

と輸入のこれらの形の違い:

import x = require('y'); 
import x from 'y'; 
import { x } from 'y' 
import * as x from 'y'; 

そしてそれらのそれぞれを使用する誰もが私には、これらのエクスポートの違いを説明できますか?

答えて

2

これは、すべてのmodules docs pageでカバーされています:

Default exports

export default class Foo {} 
// and 
import x from 'y'; 

各モジュールは、必要に応じてデフォルトのエクスポートをエクスポートすることができます。デフォルトのエクスポート にはキーワードdefaultが設定されています。モジュールごとに1つのデフォルトの のエクスポートのみが可能です。デフォルトのエクスポートは別の インポートフォームを使用してインポートされます。

Export =

export = Foo; 
// and 
import x = require('y'); 

両方CommonJSとAMDは、一般的に、輸出の概念を持っているモジュールからすべてのエクスポートを含む オブジェクト。

また、エクスポートオブジェクトをカスタム単一の オブジェクトに置き換えることもサポートしています。デフォルトのエクスポートは、この の動作の代わりに動作するようになっています。しかし、両者は互換性がありません。 TypeScriptは、従来のCommonJSおよびAMDワークフローをモデル化するために、export = export =をサポートしています。

export =構文は、モジュール からエクスポートされる単一のオブジェクトを指定します。これはクラス、インターフェイス、名前空間、関数、または enumです。

export =、TypeScript固有のインポートを使用してモジュールをインポートする場合は、 = require( "module")を使用してモジュールをインポートする必要があります。

あなたが含まれる他の形式:

export class Foo { } 
// and 
import { x } from 'y' 
import * as x from 'y'; 

exportimportの正規形です。
これはes6のインポート/エクスポート構文に基づいており、MDNでも詳細情報を見つけることができます:import/export