Merge pull request #4280 from JsonFreeman/master

Fix ES6 Promise typings so that a void error callback does not mess up inference
This commit is contained in:
Basarat Ali Syed
2015-05-08 11:51:28 +10:00
2 changed files with 33 additions and 2 deletions
+29
View File
@@ -160,3 +160,32 @@ getJSON('story.json').then(function(story: Story) {
}).then(function() {
(<HTMLElement>document.querySelector('.spinner')).style.display = 'none';
});
interface T1 {
__t1: string;
}
interface T2 {
__t2: string;
}
interface T3 {
__t3: string;
}
function f1(): Promise<T1> {
return Promise.resolve({ __t1: "foo_t1" });
}
function f2(x: T1): T2 {
return { __t2: x.__t1 + ":foo_21" };
}
var x3 = f1()
.then(f2, (e: Error) => {
console.log("error 1");
throw e;
})
.then((x: T2) => {
return { __t3: x.__t2 + "bar" };
});
+4 -2
View File
@@ -4,7 +4,8 @@
// Definitions: https://github.com/borisyankov/DefinitelyTyped
interface Thenable<R> {
then<U>(onFulfilled?: (value: R) => U | Thenable<U>, onRejected?: (error: any) => U | Thenable<U>): Thenable<U>;
then<U>(onFulfilled?: (value: R) => U | Thenable<U>, onRejected?: (error: any) => U | Thenable<U>): Thenable<U>;
then<U>(onFulfilled?: (value: R) => U | Thenable<U>, onRejected?: (error: any) => void): Thenable<U>;
}
declare class Promise<R> implements Thenable<R> {
@@ -27,7 +28,8 @@ declare class Promise<R> implements Thenable<R> {
* @param onFulfilled called when/if "promise" resolves
* @param onRejected called when/if "promise" rejects
*/
then<U>(onFulfilled?: (value: R) => U | Thenable<U>, onRejected?: (error: any) => U | Thenable<U>): Promise<U>;
then<U>(onFulfilled?: (value: R) => U | Thenable<U>, onRejected?: (error: any) => U | Thenable<U>): Promise<U>;
then<U>(onFulfilled?: (value: R) => U | Thenable<U>, onRejected?: (error: any) => void): Promise<U>;
/**
* Sugar for promise.then(undefined, onRejected)