//// [bestCommonTypeReturnStatement.ts] interface IPromise { then(successCallback: (promiseValue: T) => any, errorCallback?: (reason: any) => any): IPromise; } function f() { if (true) return b(); return d(); } function b(): IPromise { return null; } function d(): IPromise { return null; } //// [bestCommonTypeReturnStatement.js] function f() { if (true) return b(); return d(); } function b() { return null; } function d() { return null; }