When TypeScript's void type is used in combination with other types through intersection, the outcomes vary.
type A = void & {} // A becomes void & {}
type B = void & '1' // B becomes never
type C = void & 1 // C becomes never
type D = void & string // D becomes never
type E = void & String // E becomes void & String
type A = void & {}
type E = void & String
Shouldn't they all be never types, though?