 interface Base { propToOmit: string; propToKeep: string } interface Foo extends Base { type: "foo"; foo: string } interface Bar extends Base { type: "bar"; bar: string } type DiscriminatingUnion = Foo | Bar; 