✅ クラスコンポーネント(vue-property-decorator)は、 👉 Vue本体の型情報と完全には統合されていなかった。
✅ Composition APIでは、
👉 defineProps
やdefineEmits
を使うことでpropsやemitsも型安全になった。
✅ しかし、小さなミス(例えば、型定義と実装のズレ)で、型エラーがすぐ発生するようになった。
@Prop({ type: String, default: '' }) value!: string;
value
に何か変なもの(例えば、数値)を渡してもコンパイルエラーにならない。const props = defineProps<{
modelValue: string
}>();
modelValue
には必ずstring型しか受け取れない。シチュエーション | 説明 |
---|---|
propsの型定義ミス | 親が違う型を渡す |
emitsの型ミス | emit側と受け取る側で型がズレる |
return型のミス | useXxx関数(コンポーザブル)で返す値と、呼び出し元で期待してる型が違う |
store関連の型ミス | VuexやPiniaで、stateやactionの型がズレている |