Birini kontrol ediyordum .tsconfig dosyasını ve orada gördüm--esModuleInterop
Bu onun .tsconfigdosyası
{
"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"]
}
Burada birincil sorum nedir "esModuleInterop": true,ve nedir
"allowSyntheticDefaultImports": true,? Bir bakıma bağımlı olduklarını biliyorum "module": "commonjs",. Birisi bunu mümkün olan en iyi insan dilinde açıklamaya çalışabilir mi?
allowSyntheticDefaultImportsEyaletler için resmi belgeler
Varsayılan dışa aktarım olmadan modüllerden varsayılan içe aktarmaya izin verin. Bu kod yaymayı etkilemez, sadece yazım denetimi yapar.
Bu demek mi? İçe aktarma varsayılanının tek kullanım durumunun bir şeyi başlatmak olacağını düşündüğümden herhangi bir ihracat varsayılanı yoksa? singleton gibi mi?
Aşağıdaki soru / cevap da mantıklı değil --esModuleInterop'u tsconfig'te bayrak olmasının aksine kullanmanın bir yolu var mı?
Ve --esModuleInteropderleyici sayfasındaki tanım
Çalışma zamanı babel ekosistemi uyumluluğu için __importStar ve __importDefault yardımcıları yayınlayın ve tür sistemi uyumluluğu için --allowSyntheticDefaultImports'u etkinleştirin.
Ayrıca anlamak / anlamak benim için zor görünüyordu
--esModuleInteropbayrak,import * as moment from 'moment'oldu değil doğru.import moment = require('moment')oldu.