const propsType = {
age: {
type: Number,
required: true
}
}
export default deineComponent({
name: 'HelloWorld',
props: PropsType,
mounted() {
this.age // 類型為number || undefined
}
})
解決方法:在定義props類型後加上as const
const propsType = {
age: {
type: Number,
required: true
}
} as const;
原因: PropsOptions 繼承隻讀類型的ComponentPropsOptions,而ts中required:true是被認為在這個對象上是必須的,是以會被消除掉
https://github.com/vuejs/vue-next/blob/master/packages/runtime-core/src/apiDefineComponent.ts