Vue3 TypeScript Setup
近一年来写vue3的总结篇,包括props,父子组件通信,emit,expose等等相关总结。
Props && defineProps && withDefaults
当使用基本的defineProps的时候,其声明类型如下
interface Props {
name: string
age?: number
}
defineProps<Props>({
/** ... */})
// or
defineProps<{
/** ... */}>({
/** ... */})
如果按照这样的写法,我们就失去了声明默认值的能力,这时候就需要通过编译器宏来解决 -> withDefaults
interface Props {
name: string
age?: number
}
const props = withDefaults(defineProps<Props>(), {
name: 张三,
age: 18
})
// or
const props = withDefaults(defineProps<{
/** ... */
}>(), {
name: 张三,
age: 18
})
在template
中使用