天天看點

vue3類型推斷有誤,即props類型定義設定require:true,但使用時,仍然顯示類型可為undefined

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

vue3類型推斷有誤,即props類型定義設定require:true,但使用時,仍然顯示類型可為undefined