// a class constructor may return an expression, it must be assignable to the class instance type to be valid class C { constructor() { return 1; } } class D { x: number; constructor() { return 1; // error } } class E { x: number; constructor() { return { x: 1 }; } } class F { x: T; constructor() { return { x: 1 }; // error } } class G { x: T; constructor() { return { x: null }; } }