diff --git a/typescript-deferred/typescript-deferred-tests.ts b/typescript-deferred/typescript-deferred-tests.ts new file mode 100644 index 000000000..0bfa82582 --- /dev/null +++ b/typescript-deferred/typescript-deferred-tests.ts @@ -0,0 +1,61 @@ +/// + +import tsd = require('typescript-deferred'); + +var t1: tsd.PromiseInterface = tsd.when(10) + .then(() => tsd.when('foo')); + +var t2: tsd. PromiseInterface = tsd.when(10) + .then(() => 'foo'); + +var t3: tsd.PromiseInterface = tsd.when(10) + .then(() => 'foo', () => tsd.when('bar')); + +var t4: tsd.PromiseInterface = tsd.when(10) + .then(() => 'foo', () => 'bar'); + +var t5: tsd.PromiseInterface = tsd.when(10) + .then(() => tsd.when('foo'), () => 'bar'); + +var t6: tsd.PromiseInterface = tsd.when(10) + .then(() => tsd.when('foo'), () => tsd.when('bar')); + +var t7: tsd.PromiseInterface = tsd.when(10) + .always(() => 'foo'); + +var t8: tsd.PromiseInterface = tsd.when(10) + .always(() => tsd.when('foo')); + +var t9: tsd.PromiseInterface = tsd.when(10) + .otherwise(() => 11); + +var t10: tsd.PromiseInterface = tsd.when(10) + .otherwise(() => tsd.when(11)); + +var t11: tsd.PromiseInterface = tsd.when('foo'); + +var t12: tsd.PromiseInterface = tsd.when(tsd.when('foo')); + +var t13: tsd.PromiseInterface = tsd.create() + .promise; + +var t14: tsd.DeferredInterface = tsd.create(); + +var t15: tsd.ThenableInterface = tsd.when('foo'); + +var t16: tsd.PromiseInterface = tsd.when( >tsd.when('foo')); + +var t17: tsd.PromiseInterface = tsd.when(10) + .then(() => >tsd.when('foo'), () => >tsd.when('bar')); + +var t18: tsd.PromiseInterface = tsd.create() + .resolve('foo') + .promise; + +var t19: tsd.PromiseInterface = tsd.create() + .resolve(tsd.when('foo')) + .promise; + +var t20: tsd.PromiseInterface = tsd.create() + .reject(new Error('foo')) + .promise; diff --git a/typescript-deferred/typescript-deferred.d.ts b/typescript-deferred/typescript-deferred.d.ts new file mode 100644 index 000000000..bffc65b70 --- /dev/null +++ b/typescript-deferred/typescript-deferred.d.ts @@ -0,0 +1,47 @@ +// Type definitions for typescript-deferred v0.1.5 +// Project: https://github.com/DirtyHairy/typescript-deferred +// Definitions by: Christian Speckner +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +declare module "typescript-deferred" { + + export interface ImmediateSuccessCB { + (value: T): TP; + } + export interface ImmediateErrorCB { + (err: any): TP; + } + export interface DeferredSuccessCB { + (value: T): ThenableInterface; + } + export interface DeferredErrorCB { + (error: any): ThenableInterface; + } + export interface ThenableInterface { + then(successCB?: DeferredSuccessCB, errorCB?: DeferredErrorCB): ThenableInterface; + then(successCB?: DeferredSuccessCB, errorCB?: ImmediateErrorCB): ThenableInterface; + then(successCB?: ImmediateSuccessCB, errorCB?: DeferredErrorCB): ThenableInterface; + then(successCB?: ImmediateSuccessCB, errorCB?: ImmediateErrorCB): ThenableInterface; + } + export interface PromiseInterface extends ThenableInterface { + then(successCB?: DeferredSuccessCB, errorCB?: DeferredErrorCB): PromiseInterface; + then(successCB?: DeferredSuccessCB, errorCB?: ImmediateErrorCB): PromiseInterface; + then(successCB?: ImmediateSuccessCB, errorCB?: DeferredErrorCB): PromiseInterface; + then(successCB?: ImmediateSuccessCB, errorCB?: ImmediateErrorCB): PromiseInterface; + otherwise(errorCB?: DeferredErrorCB): PromiseInterface; + otherwise(errorCB?: ImmediateErrorCB): PromiseInterface; + always(errorCB?: DeferredErrorCB): PromiseInterface; + always(errorCB?: ImmediateErrorCB): PromiseInterface; + } + export interface DeferredInterface { + resolve(value?: ThenableInterface): DeferredInterface; + resolve(value?: T): DeferredInterface; + reject(error?: any): DeferredInterface; + promise: PromiseInterface; + } + export function create(): DeferredInterface; + export function when(value?: ThenableInterface): PromiseInterface; + export function when(value?: T): PromiseInterface; + + +}