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

由于项目功能越来越多,单个 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 组件套件生成源码
阅读 2k
1 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏