//// [ipromise3.ts] interface IPromise3 { then(success?: (value: T) => IPromise3, error?: (error: any) => IPromise3, progress?: (progress: any) => void ): IPromise3; then(success?: (value: T) => IPromise3, error?: (error: any) => U, progress?: (progress: any) => void ): IPromise3; then(success?: (value: T) => U, error?: (error: any) => IPromise3, progress?: (progress: any) => void ): IPromise3; then(success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void ): IPromise3; done? (success?: (value: T) => any, error?: (error: any) => any, progress?: (progress: any) => void ): void; } var p1: IPromise3; var p2: IPromise3 = p1.then(function (x) { return x; }); //// [ipromise3.js] var p1; var p2 = p1.then(function (x) { return x; });