From 5b5846cbe46da6b64d5dce1a077307334d54bdd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20de=20Campredon?= Date: Wed, 15 Jan 2014 13:12:37 +0100 Subject: [PATCH] es6-promises defintion addition --- es6-promises/promises-tests.ts | 76 ++++++++++++++++++++++++ es6-promises/promises-tests.ts.tscparams | 1 + es6-promises/promises.d.ts | 39 ++++++++++++ 3 files changed, 116 insertions(+) create mode 100644 es6-promises/promises-tests.ts create mode 100644 es6-promises/promises-tests.ts.tscparams create mode 100644 es6-promises/promises.d.ts diff --git a/es6-promises/promises-tests.ts b/es6-promises/promises-tests.ts new file mode 100644 index 000000000..9f1e05dc2 --- /dev/null +++ b/es6-promises/promises-tests.ts @@ -0,0 +1,76 @@ +var promiseString: Promise, + promiseStringArr: Promise, + arrayOfPromise: Promise[], + promiseNumber: Promise, + promiseAny: Promise, + thenable: Thenable; + +// constructor test +var constructResult = new Promise((resolve, reject) => { + resolve('a string'); +}); +promiseString = constructResult; + + +var constructResult1 = new Promise((resolve:(promise: Thenable) => void , reject) => { + resolve(Promise.resolve('a string')); +}); +promiseString = constructResult1; + +//cast test +var castResult = Promise.cast('a string'); +promiseString = castResult; +var castResult1 = Promise.cast(Promise.resolve('a string')); +promiseString = castResult1; + +//resolve test +var resolveResult = Promise.resolve('a string'); +promiseString = resolveResult; + +var resolveResult1 = Promise.resolve(thenable); +promiseString = resolveResult1; + +//reject test +var rejectResult = Promise.reject('there is an error'); +promiseAny = rejectResult; + +//all test +var allResult = Promise.all(arrayOfPromise); +promiseStringArr = allResult; + +//race test +var raceResult = Promise.race(arrayOfPromise); +promiseString = raceResult; + + +//then test +var thenWithPromiseResult = promiseString.then(word => Promise.resolve(word.length)); +promiseNumber = thenWithPromiseResult; + +var thenWithPromiseResultAndVoidReject = promiseString.then(word => Promise.resolve(word.length), error => console.log(error)); +promiseNumber = thenWithPromiseResultAndVoidReject; + +var thenWithPromiseResultAndPromiseReject = promiseString.then(word => Promise.resolve(word.length), error => Promise.resolve(10)); +promiseNumber = thenWithPromiseResultAndPromiseReject; + +var thenWithPromiseResultAndSimpleReject = promiseString.then(word => Promise.resolve(word.length), error => 10); +promiseNumber = thenWithPromiseResultAndSimpleReject; + +var thenWithSimpleResult = promiseString.then(word => word.length); +promiseNumber = thenWithSimpleResult; + +var thenWithSimpleResultAndVoidReject = promiseString.then(word => word.length, error => console.log(error)); +promiseNumber = thenWithSimpleResultAndVoidReject; + +var thenWithSimpleResultAndPromiseReject = promiseString.then(word => word.length, error => Promise.resolve(10)); +promiseNumber = thenWithSimpleResultAndPromiseReject; + +var thenWithSimpleResultAndSimpleReject = promiseString.then(word => word.length, error => 10); +promiseNumber = thenWithSimpleResultAndSimpleReject; + +//catch test +var catchWithSimpleResult = promiseString.catch(error => 10); +promiseNumber = catchWithSimpleResult; + +var catchWithPromiseResult = promiseString.catch(error => Promise.resolve(10)); +promiseNumber = catchWithPromiseResult; diff --git a/es6-promises/promises-tests.ts.tscparams b/es6-promises/promises-tests.ts.tscparams new file mode 100644 index 000000000..3cc762b55 --- /dev/null +++ b/es6-promises/promises-tests.ts.tscparams @@ -0,0 +1 @@ +"" \ No newline at end of file diff --git a/es6-promises/promises.d.ts b/es6-promises/promises.d.ts new file mode 100644 index 000000000..c24844e6f --- /dev/null +++ b/es6-promises/promises.d.ts @@ -0,0 +1,39 @@ +interface Thenable { + then(onFulfill: (value: R) => Thenable, onReject?: (error: any) => void): Thenable; + then(onFulfill: (value: R) => U, onReject?: (error: any) => void): Thenable; + then(onFulfill: (value: R) => Thenable, onReject?: (error: any) => Thenable): Thenable; + then(onFulfill: (value: R) => Thenable, onReject?: (error: any) => U): Thenable; + then(onFulfill: (value: R) => U, onReject?: (error: any) => Thenable): Thenable; + then(onFulfill: (value: R) => U, onReject?: (error: any) => U): Thenable; +} + +declare class Promise implements Thenable { + constructor(callback: (resolve : (result: R) => void, reject: (error: any) => void) => void); + constructor(callback: (resolve : (result: Thenable) => void, reject: (error: any) => void) => void); + + then(onFulfill: (value: R) => Thenable, onReject?: (error: any) => void): Promise; + then(onFulfill: (value: R) => U, onReject?: (error: any) => void): Promise; + then(onFulfill: (value: R) => Thenable, onReject?: (error: any) => Thenable): Promise; + then(onFulfill: (value: R) => Thenable, onReject?: (error: any) => U): Promise; + then(onFulfill: (value: R) => U, onReject?: (error: any) => Thenable): Promise; + then(onFulfill: (value: R) => U, onReject?: (error: any) => U): Promise; + + catch(onReject?: (error: any) => Thenable): Promise + catch(onReject?: (error: any) => U): Promise +} + +declare module Promise { + + + function cast(promise: Promise): Promise; + function cast(object: R): Promise; + + function resolve(thenable: Thenable): Promise; + function resolve(object: R): Promise; + + function reject(error: any): Promise; + + function all(promises: Promise[]): Promise; + + function race(promises: Promise[]): Promise; +} \ No newline at end of file