■ 要点まとめ(先に結論)

クラスコンポーネント(vue-property-decorator)は、 👉 Vue本体の型情報と完全には統合されていなかった

Composition APIでは、

👉 definePropsdefineEmitsを使うことでpropsやemitsも型安全になった。

✅ しかし、小さなミス(例えば、型定義と実装のズレ)で、型エラーがすぐ発生するようになった。


■ 具体例で理解する

(1)クラスコンポーネント時代(ゆるい)

@Prop({ type: String, default: '' }) value!: string;

(2)Composition API時代(厳格)

const props = defineProps<{
  modelValue: string
}>();

■ どんなときに型エラーが起きるか?

シチュエーション 説明
propsの型定義ミス 親が違う型を渡す
emitsの型ミス emit側と受け取る側で型がズレる
return型のミス useXxx関数(コンポーザブル)で返す値と、呼び出し元で期待してる型が違う
store関連の型ミス VuexやPiniaで、stateやactionの型がズレている