【发布时间】:2017-05-01 16:53:31
【问题描述】:
是否可以通过import module from 'module'; 导入未定义默认导出的模块并将其编译为 commonjs?
这个Stack Overflow Answer 表明通过--allowSyntheticDefaultImports 选项是可能的(尽管仅适用于systemjs 模块?)。
Compiler Options Documentation 声明 allowSyntheticDefaultImports 只影响类型检查。
除了import * from module as 'module'; 语法之外还有什么变通方法吗?
【问题讨论】:
-
只是好奇,为什么你必须使用导入模块的语法对你很重要?如果
import * from module as 'module'有效,您为什么不想使用它? -
几个原因:1)它很丑 2)它在导入一个故意没有默认导出的模块和一个确实有默认导出的模块之间产生了差异,尽管语法不同.理论上,一旦(/if)jquery.d.ts 文件被更新以正确(imo)将 JQuery 函数导出为默认函数,就需要更改语法解决方法。
-
所以忽略 #1 哈哈,你的观点 #2 并不取决于你,或者取决于
.d.ts文件。如果实际的.js文件定义了默认导出,那么.d.ts文件应该包含该信息并且您可能会使用import module from 'module';导入它如果实际的.js文件只定义了命名导出,那么.d.ts文件将反映这一点,并且您使用命名导入或通配符导入来导入内容,如您的帖子中所述。 TLDR:您使用的导入语法由实际 JS 模块的形状决定
标签: typescript