问题重现
当使用ts语法导入第三方库时,比如koa模块,这时会发现出现这个错误。这个错误因为没有默认导出。

讯享网
问题原因
一般我们使用ts导入其他模块时都会有一个声明文件。不明白可以看我另外一篇 博客,我们进入声明文件中可以发现模块是通过export =的方式导出的。

于是我们去TS官网中的模块可以发现:当使用export = 和 import = require()时
- CommonJS和AMD的环境里都有一个exports变量,这个变量包含了一个模块的所有导出内容。
- CommonJS和AMD的exports都可以被赋值为一个对象, 这种情况下其作用就类似于 es6 语法里的默认导出,即 export default语法了。虽然作用相似,但是 export default 语法并不能兼容CommonJS和AMD的exports。
- 为了支持CommonJS和AMD的exports, TypeScript提供了export =语法。
- export =语法定义一个模块的导出对象。 这里的对象一词指的是类,接口,命名空间,函数或枚举。
- 若使用export =导出一个模块,则必须使用TypeScript的特定语法import module = require(“module”)来导入此模块。
可以发现,ts为了兼容CommonJS和AMD的exports。所以这里定义了一种方法来解决这种问题使用export= 的方式导出的模块必须使用import module = require(“module”)这种方式导入。


这里也可以使用另外一种方式解决这个问题:
import * as koa from ‘koa’
但是这种方式导入和上面是有一些区别的。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/66420.html