Vue 3 代码分离后模板的变量类型全部推导成了 never?

作者站长头像
站长
· 阅读数 10

由于项目功能越来越多,单个 vue 文件代码量过于臃肿,因此产生了将代码分离的想法并在昨天手写了个 npm script 用来生成组件套件。生成的代码文件如果不使用 TS 是没有任何报错信息的,反之则会在模板文件出现类型推导错误的情况,生成的代码如下:

// index.ts
import { defineComponent, ref } from 'vue';
import './index.scss';

export default defineComponent({
  setup (props, { emit }) {
    const msg = ref("命令生成文件");
    return {
      msg
    }
  }
});
  
<!-- index.vue -->
<template>
  <p>权限视角</p>
</template>

<script lang="ts">
import businessComponent from './index';
// @ts-ignore
export default defineComponent({...businessComponent});
</script>
p {
    font: 14px/500;
}

在生成的 .vue 文件中,如果不加入 // @ts-ignore 会出现错误提示 没有与此调用匹配的重载;而加上后,不管在 TS 文件如何定义类型,整个文件的类型都自动变成了 never

有没有大神知道这是怎么回事?

补充

  1. Vue 3 组件套件生成源码
回复
1个回答
avatar
test
2024-07-04

把ts里的defineComponent去掉,或者把vue里的改成export {default} from './index'

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容