possibleTypes (apollo)
InMemoryCache (apollo)のoptionの1つ
GraphQL の Union や Interface 型に対して、それを構成する具象型(__typename)を明示的に指定する
なぜ必要か?
Apollo は __typenameを元にcacheを正規化する
しかし Union / Interface 型は構造が曖昧であるため、cacheの正規化が正しく動かない
そのため、どの具象型が対応するかを明示することで fragment matchingを正しく行えるようになる
例
code:ts
const cache = new InMemoryCache({
possibleTypes: {
Character: "Human", "Droid", // Character インターフェースの実装型
},
});
よくあるケース
GraphQL サーバーの introspection 結果から自動生成(e.g. apollo client:codegen)で設定する