TL;DR
- 公式やコミュニティが型を提供していれば、自分で定義せずにそれを使う。
- なければスキーマから型を生成し、スキーマもなければデータから型を生成する。
内容
提供されている型を使う
公式のクライアントやコミュニティが型を提供している場合は、自分で定義せずにそれを使う。たとえば GeoJSON には @types/geojson がある。
スキーマから型を生成する
型が提供されていない場合は、スキーマから型を生成する。OpenAPI なら Orval、GraphQL Schema なら GraphQL Code Generator、Protocol Buffers なら Buf が使える。
データから型を生成する
スキーマも提供されていない場合は、データから型を生成する。JSON なら quicktype が使える。ただし、データセットが無限にある場合は、生成した型からエッジケースが漏れ、実際の型と合わなくなるおそれがある。