【发布时间】:2019-03-05 16:24:03
【问题描述】:
我需要确认以下理论。根据TS docs,在tsconfig.json中可以设置两个选项。
--allowSyntheticDefaultImports: 允许从没有默认导出的模块进行默认导入。这不会影响代码发出,只是类型检查。
--esModuleInterop: 发出 __importStar 和 __importDefault 帮助程序以实现运行时 babel 生态系统的兼容性,并启用 --allowSyntheticDefaultImports 以实现类型系统的兼容性。
当我四处搜索时,我看到两者都设置为 true(至少就我所针对的行为而言)。但是,据我了解文档、TS 和转译为 JS,两者都使用是没有意义的。
按照我的想法,我可能只使用后者并完全删除前者。然而,由于谨慎和谦虚,我并不完全确定并担心我现在正在做一些不那么光明的事情而没有意识到这一点。
我担心这是不恰当的事情,稍后会在驴子上咬我,导致数小时的哀叹和拉扯头发,同时拼命排除故障。怀疑的基础是两个选项都可用,所以我推断有四种情况需要所有组合(true/false 等),但我无法想象它们是哪一种是。
如果 --esModuleInterop: true 在 compilerOptions 中跳过 --allowSyntheticDefaultImports 是否完全安全?如果是这样,为什么我们有这个选项?
额外问题:这两个选项的所有四种组合 (true/false) 何时需要?
【问题讨论】:
标签: javascript typescript webpack-4 typescript3.0