我正在检查某人.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",。有人能试着用最好的人类语言解释一下吗?< / p >
allowSyntheticDefaultImports的官方文档声明
允许从没有默认导出的模块中默认导入。这并 不影响代码发出,只是类型检查
这是什么意思?如果没有任何导出默认,那么我认为导入默认的唯一用例是初始化一些东西?就像一个单身汉?
下面的问题/答案也没有意义 是否有一种方法可以在tsconfig中使用——esModuleInterop,而不是将其作为标志? < / p >
和编译器页面上的--esModuleInterop定义
为运行时babel释放__importStar和__importDefault帮助 生态系统兼容性和启用——allowsyntheticdefaulultimports for 类型系统兼容性。< / p >
我也很难理解