2025年moduleName is declared but its value is never read.ts(6133)报错解析

moduleName is declared but its value is never read.ts(6133)报错解析问题重现 当使用 ts 语法导入第三方库时 比如 koa 模块 这时会发现出现这个错误 这个错误因为没有默认导出 问题原因 一般我们使用 ts 导入其他模块时都会有一个声明文件 不明白可以看我另外一篇 博客 我们进入声明文件中可以发现模块是通过 export 的方式导出的 于是我们去 TS 官网中的模块可以发现

大家好,我是讯享网,很高兴认识大家。

问题重现

当使用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’

但是这种方式导入和上面是有一些区别的。

小讯
上一篇 2025-04-08 07:34
下一篇 2025-04-11 13:19

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/66420.html