私は誰かの.tsconfigファイルをチェックアウトしていて、そこで見つけました--esModuleInterop
これは彼の.tsconfigファイルです
{
"compilerOptions": {
"moduleResolution": "node",
"target": "es6",
"module": "commonjs",
"lib": ["esnext"],
"strict": true,
"sourceMap": true,
"declaration": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"declarationDir": "./dist",
"outDir": "./dist",
"typeRoots": ["node_modules/@types"]
},
"include": ["src/**/*.ts"],
"exclude": ["node_modues"]
}
ここでは、私の主な質問は何であるかである "esModuleInterop": true,と
"allowSyntheticDefaultImports": true,。私は彼らが一種に依存していることを知っています "module": "commonjs",。誰かがそれを可能な限り最高の人間の言語で説明しようとすることができますか?
allowSyntheticDefaultImports州の公式ドキュメント
デフォルトのエクスポートなしでモジュールからのデフォルトのインポートを許可します。これはコードの発行には影響せず、型チェックだけに影響します。
それは〜を意味しますか?エクスポートのデフォルトがない場合、インポートのデフォルトの唯一の使用例は何かを初期化することだと思いますか?シングルトンのように?
次の質問/回答も意味がありません フラグであるのではなく、tsconfigで--esModuleInteropを使用する方法はありますか?
そして--esModuleInteropコンパイラページでの定義
ランタイムバベルエコシステムの互換性のために__importStarおよび__importDefaultヘルパーを発行し、タイプシステムの互換性のために--allowSyntheticDefaultImportsを有効にします。
また、理解/理解するのが難しいようでした
--esModuleInteropフラグ、import * as moment from 'moment'だったではないが正しいです。import moment = require('moment')だった。