1
{ a: string | undefined }
{ a: string } | { a: undefined }
These mean same set of values. And if these are equals, the following works: Exclude<{ a: string | undefined }, { a: string }> // => { a: undefined }
But it don't work as I expected. Because { a: string | undefined } is not { a: string } | { a: undefined }.If it works, Exclude<A, B> could be considered as subtraction of set in mathematical context. I think there is big deals if these types are equals. Why not? And please tell me related GitHub issues if you know.