TypeScript Version: 2.2.0
Code
interface I { attr: string }
type M = <T extends I>() => T
const v: M = () => ({})
v().attr
Expected behavior:
Type '() => {}' is not assignable to type 'M'. Type '{}' is not assignable to type 'I'.
Actual behavior:
The compilation is successful.