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个回答
test
2024-07-04
把ts里的defineComponent
去掉,或者把vue里的改成export {default} from './index'
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容