//// [promiseIdentityWithAny.ts] interface IPromise { then(callback: (x: T) => IPromise): IPromise; } interface Promise { then(callback: (x: T) => Promise): Promise; } // Should be ok because signature type parameters get erased to any var x: IPromise; var x: Promise; //// [promiseIdentityWithAny.js] // Should be ok because signature type parameters get erased to any var x; var x;