【きょうへんせいとはんへんせい】
共変性と反変性 とは?
💡 「親子関係がコンテナにも伝わるか?」型安全の奥にある継承のルール。
📌 このページのポイント
- 共変性:子の型を親の型として扱える(出力側で使う)
- 反変性:親の型を子の型として扱える(入力側で使う)
- 不変性:そのままでしか使えない(多くのジェネリクスのデフォルト)
- JavaScriptのメソッドの引数は共変・反変の両方が混在しうる
`List
それが型安全の落とし穴なんだ。もし `List
じゃあ共変性ってどういうときに使えるの?
読み取り専用のとき(出力側)は安全に使えるんだ。`Producer
反変性っていうのは逆なの?
そうだよ。書き込み専用のとき(入力側)は反変性が使えるんだ。`Consumer
不変性っていうのが一番厳しいの?
📖 おまけ:英語の意味
「Covariance and Contravariance」 = 共変性と反変性
💬 co- は「一緒に」contra- は「反対に」という意味の接頭辞で、型パラメータの変化が元の型の継承方向と同じか逆かを表しているんだよ。