2017-05-01 23 views
0

デフォルトエクスポートなしで定義されたモジュールをimport module from 'module';にインポートしてcommonjsにコンパイルできますか?TypeScript(CommonJS)のデフォルトエクスポートを使用しないモジュールのインポート

このStack Overflow Answerは、--allowSyntheticDefaultImportsオプションを渡すことが可能であることを示しています(ただし、systemjsモジュールの場合のみです)。 Compiler Options Documentationには、allowSyntheticDefaultImportsが型検査にのみ影響すると記載されています。

import * from module as 'module';の構文以外の回避策はありますか?

+0

、なぜあなたがモジュールをインポートするために使用する構文はあなたに関係しますか?モジュール 'import * *を' module 'として使うのはなぜですか? – JKillian

+0

いくつかの理由があります: 1)醜い 2)意図的にデフォルトエクスポートを持たないモジュールのインポートと、異なる構文ではあるが、デフォルトのエクスポートを持つモジュールとの間に違いが生じます。理論的には、構文の回避策を一度変更する必要があります(/ if)jquery.d.tsファイルがデフォルト機能としてJQuery関数を適切にエクスポート(imo)するように更新されています。 –

+1

#1 haha​​を無視すると、あなたのポイント#2は本当にあなた次第であるか、 '.d.ts'ファイルまでです。実際の '.js'ファイルがデフォルトのエクスポートを定義している場合、' .d.ts'ファイルにその情報が含まれているはずです。 'import module from 'module';を使用してインポートします。ファイルは名前付きのエクスポートのみを定義し、 '.d.ts'ファイルはそのことを反映し、あなたの投稿に記載されているように名前付きインポートやワイルドカードインポートを使ってファイルをインポートします。 TLDR:使用するインポート構文は、実際のJSモジュールの形状によって決まります – JKillian

答えて

1

あなたが記述していることは...

CommonJS CommonJSではありませんが、あなたのモジュールを管理するためにmodule.exportsexportsrequireを使用するノードによって実装モジュールのAPIです。

TypeScriptはJavaScriptのスーパーセットであり、ES6ネイティブモジュールに依存しています。ですから、デフォルトの輸出をしたくない場合は、あなたがこのような何かを行うことができるはず:

あなたのモジュール

export function foo() { 
    console.log('Foo'); 
}; 

export function bar() { 
    console.log('Bar'); 
}; 

あなたのエントリポイントがただ、不思議

import {foo, bar} from './module'; 

foo(); 
bar(); 
+0

JQuery(non typescriptモジュール)を 'import * as $ from 'jquery'; 'を使用せずにtypescriptファイルにインポートしてコンパイルしたいそのファイルをcommonjsに転送します。 –

+0

この情報をあなたの質問に入れなかったのはなぜですか? :) – Badacadabra

関連する問題