setup 语法糖 导出 type 飘红

来源:5-3 ValidateInput 第二部分 —抽象验证规则

EastSummer

2023-03-14

老师您好,问题和这个相同
setup 3.2写法的 导出 type 飘红
也看了些参考资料
ts import type和export type 解决vite中导入类型报错的问题
但是我发现如果接口也导出的话,可以规避这个问题,如下:
图片描述
图片描述
但是不是很能理解为什么会这样,根本原因是什么,望解惑

写回答

3回答

阿康喜欢蓝色

2023-05-16

还有一种更简单的方法是使用 ComponentOptionsWithoutProps 这个类型来声明并导出组件类型。例如:

//img.mukewang.com/szimg/64625d8909bd31f103810474.jpg

在这个例子中,我们使用 ComponentOptionsWithoutProps 来声明组件类型,并将其赋值给一个常量 options。在 setup() 函数中,将 options 导出即可。

无论使用哪种方法,都可以避免类型错误,并且不需要从 Vue 继承组件类型。


0
0

阿康喜欢蓝色

2023-05-16

在 Vue 3.2 中,<script setup>可以用来简化组件的编写,但是在导出组件类型时,可能会出现编译时类型错误的问题。

如果你在 <script setup> 中声明了一个组件类型,并将其导出,可能会收到以下错误:

Error: [VueCompilerError] Exported `type` cannot be a subclass of `Vue`.


这个错误是由于 TypeScript 在处理组件类型时,会将其视为一个 Vue 子类。但是,在 <script setup> 中,组件类型被视为一个“基类”,因此不支持继承自 Vue。因此,你需要对类型做一些修改来解决这个问题。

一种解决方法是使用 defineComponent 函数来定义组件类型,而不是继承自 Vue。例如:

//img.mukewang.com/szimg/64625cc90961dfac03050500.jpg

0
0

张轩

2023-03-15

同学你好

我试了一下,这看起来应该是一个 ts 错误,这里只要 export 一个变量也可能出现同样的错误。我也没法理解第二种为什么不会有问题。

但是在单独的 ts 文件中其实并不会出现这个错误,所以这里应该是volar 以及 ts setup 语法糖联合出现的一个问题。

所以这里最好是遵循一个简单的原则,在 setup 语法糖中不要显式的导出。

要导出的内容,可以添加一个普通的 script。


0
2
张轩
回复
EastSummer
同学你好 我认为这里说的是在