```ts repro enum E { A, B, C, } function f(x: E | undefined) { return x ?? E.C; } ``` Expected `f` to have type `E`, but instead it has type `E | E.C` [Playground](http://www.typescriptlang.org/play/index.html?ts=3.8.0-dev.20191224&ssl=1&ssc=1&pln=9&pc=2#code/KYOwrgtgBAolDeAoKKoEEA0zUCEuqgGEsBfRRAMzBAGMAXASwHsQoKAKADwC5YoAfKNQAmwCgxDBhASgTYUAJ2B0wC1pygB+TbAB0hANyISQA) Doesn't have anything to do with `??` - can reproduce it with `||`. ```ts enum E { A = 1, B, C, } function f(x: E | undefined) { return x || E.C; } ```