解决 TS2614: Module “*.vue“ has no exported member(Vue3+TypeScript)

解决 TS2614: Module "*.vue" has no exported member(Vue3+TypeScript)

问题

最近使用TS+Vue3.2写项目时碰到个问题:
Vue组件中定义了一个接口并导出,在另一个TS文件中import这个接口,报TS2614的错误。在其他Vue组件中导入则不会报错。

<script setup lang="ts">
//vue组件中的接口定义
export interface IProps {
    description: string
}
</script>
//TS文件中导入
import type { IProps } from '@/components/*.vue'

环境:
WebStorm 2021.3 / Vue 3.2 / TypeScript 4.1.5
报错:
TS2614: Module '"*.vue"' has no exported member 'IProps'. Did you mean to use 'import IProps from "*.vue"' instead?

离谱的是,即便我恢复到上次正常运行时的代码,重新npm install也救不回来。写代码果然是门玄学。

解决

自己摸索和搜索了些解决方案,包括重新npm install、升级TS版本、更改文件格式、更改接口类型表示等,都没有用。
这个问题启发,我尝试把接口放到一个单独的TS文件中,在用到的地方调用这个接口。这确实解决了这个问题,不再报错。
据其他一些回答说,Vue的最新VSCode插件已经解决了这个问题,但因为我主要使用WS,也就没有尝试。
也看到其他一些方案,对我来说,单独把接口放到一个TS文件中是代价最小的解决方案。虽然对于我的项目来说,这样的做法有些奇怪。
不知道后面会不会有官方的解决方案。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值