openapi 生成 union に内部専用フィールドを足すなら Exclude<> で該当 variant を差し替える
TypeScript
型設計
OpenAPI
知識
openapi から生成した union 型(components['schemas'] の union)の1 variant にだけ、公開 schema には出したくない内部専用フィールド(例: domain 更新用に合成する sourceDataType)を付けたいとき、公開 union をそのまま intersection すると公開型と重なって narrowing できない。
Exclude<PublicUnion, VariantA | VariantB> | InternalVariantA | InternalVariantB の形で、公開 variant を内部拡張型(公開型 & { 内部フィールド })に置き換える。これで公開 schema を汚さず(内部フィールドは API に出さない)、domain 内部では当該 variant を正しく narrowing できる。型再生成しても内部拡張は別定義なので消えない。