setup 语法糖 导出 type 飘红
来源:5-3 ValidateInput 第二部分 —抽象验证规则
EastSummer
2023-03-14
老师您好,问题和这个相同
setup 3.2写法的 导出 type 飘红
也看了些参考资料
ts import type和export type 解决vite中导入类型报错的问题
但是我发现如果接口也导出的话,可以规避这个问题,如下:
但是不是很能理解为什么会这样,根本原因是什么,望解惑
3回答
-
阿康喜欢蓝色
2023-05-16
还有一种更简单的方法是使用
ComponentOptionsWithoutProps
这个类型来声明并导出组件类型。例如:在这个例子中,我们使用
ComponentOptionsWithoutProps
来声明组件类型,并将其赋值给一个常量options
。在setup()
函数中,将options
导出即可。无论使用哪种方法,都可以避免类型错误,并且不需要从
Vue
继承组件类型。00 -
阿康喜欢蓝色
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
。例如:00 -
张轩
2023-03-15
同学你好
我试了一下,这看起来应该是一个 ts 错误,这里只要 export 一个变量也可能出现同样的错误。我也没法理解第二种为什么不会有问题。
但是在单独的 ts 文件中其实并不会出现这个错误,所以这里应该是volar 以及 ts setup 语法糖联合出现的一个问题。
所以这里最好是遵循一个简单的原则,在 setup 语法糖中不要显式的导出。
要导出的内容,可以添加一个普通的 script。
02