✅ クラスコンポーネント(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の型がズレている |