本文介绍: 要说今年最热门的前端技术,Vue3 和 TS 绝对榜上有名了。今天就给大家分享一下如何在 Vue3 组件中结合 Composition-Api 使用 TS 类型。如果有不会或者不熟的小伙伴,一起学起来吧!
前言
一、为 props 标注类型
使用 < script setup >
当使用 < script setup >
时,defineProps()
宏函数支持从它的参数中推导类型:
这被称为 运行时声明 ,因为传递给 defineProps()
的参数会作为运行时的 props 选项使用。
第二种方式,通过泛型参数来定义 props
的类型,这种方式更加直接:
这被称为 基于类型的声明 ,编译器会尽可能地尝试根据类型参数推导出等价的运行时选项。 这种方式的不足之处在于,失去了定义 props
默认值的能力。为了解决这个问题,我们可以使用 withDefaults 编译器宏:
上面代码会被编译为等价的运行时 props
的 default
选项。
非 < script setup >
如果没有使用 < script setup >
,那么为了开启 props
的类型推导,必须使用 defineComponent()
。传入 setup()
的 props
对象类型是从 props 选项中推导而来。
二、为 emits 标注类型
使用 < script setup >
在 < script setup >
中,emit 函数的类型标注也可以使用 运行时声明 或者 基于类型的声明 :
我们可以看到,基于类型的声明 可以使我们对所触发事件的类型进行更细粒度的控制。
非 < script setup >
若没有使用 < script setup >
,defineComponent()
也可以根据 emits
选项推导暴露在 setup
上下文中的 emit
函数的类型:
三、为 ref() 标注类型
默认推导类型
通过接口指定类型
通过泛型指定类型
四、为 reactive() 标注类型
默认推导类型
通过接口指定类型
五、为 computed() 标注类型
默认推导类型
通过泛型指定类型
六、为事件处理函数标注类型
七、为 provide / inject 标注类型
八、为 dom 模板引用标注类型
九、为组件模板引用标注类型
小结
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。