Closed
Description
TypeScript Version: 2.7.0-dev.20171110
Code
declare const a: {z: string} & {[K in never]: string}
const b: {z?: number} = a
Expected behavior:
Compile error on the second line because {z?: number}
is incompatible with {z: string}
Actual behavior:
No Error
Obviously the code above is nonsensical but I spun this out of a special case in #19869 since that one ended up being about generic function inferences and I realized this is something different.
Some more code examples that make me think my example should have a compile error:
declare const a2: {z: string} & {[K in never]: string}
const b2: {z: number} = a2
// TS2322: Type '{ z: string; } & {}' is not assignable to type '{ z: number; }'.
declare const a3: {z: string} & {}
const b3: {z?: number} = a3
// TS2322: Type '{ z: string; }' is not assignable to type '{ z?: number | undefined; }'.
declare const a4: {z: string, y: string} & {[K in never]: string}
const b4: {z?: number, y: string} = a4
// TS2322: Type '{ z: string; y: string; } & {}' is not assignable to type '{ z?: number | undefined; y: string; }'.