From cfc549b2c1b4d4947516eb2188cff325098adacc Mon Sep 17 00:00:00 2001 From: Dimitri Benin Date: Tue, 1 Aug 2017 01:25:53 +0200 Subject: [PATCH] [delay] introduce typings (#18526) --- types/delay/delay-tests.ts | 47 ++++++++++++++++++++++++++++++++++++++ types/delay/index.d.ts | 30 ++++++++++++++++++++++++ types/delay/tsconfig.json | 22 ++++++++++++++++++ types/delay/tslint.json | 1 + 4 files changed, 100 insertions(+) create mode 100644 types/delay/delay-tests.ts create mode 100644 types/delay/index.d.ts create mode 100644 types/delay/tsconfig.json create mode 100644 types/delay/tslint.json diff --git a/types/delay/delay-tests.ts b/types/delay/delay-tests.ts new file mode 100644 index 0000000000..9714bfd86d --- /dev/null +++ b/types/delay/delay-tests.ts @@ -0,0 +1,47 @@ +import delay = require('delay'); + +delay(200) + .then(() => { + }); + +let str: string; +let num: number; +Promise.resolve(delay(100)) + .then(() => { + }); + +Promise.resolve("foo") + .then(delay(100)) + .then(result => { + str = result; + }); + +Promise.resolve('foo') + .then(delay(100, 10)) + .then(result => { + num = result; + }); + +Promise.resolve('foo') + .then(delay.reject(100)) + .then(x => 10) + .catch(err => { + }); + +Promise.resolve('foo') + .then(delay.reject(100, 'bar')) + .then(x => 10) + .catch(err => { + }); + +(async () => { + const delaying = delay(1000); + delaying.cancel(); + try { + await delaying; + } catch (err) { + // `err` is an instance of `delay.CancelError` + } +})(); + +throw new delay.CancelError('bar'); diff --git a/types/delay/index.d.ts b/types/delay/index.d.ts new file mode 100644 index 0000000000..f84c7ab5e4 --- /dev/null +++ b/types/delay/index.d.ts @@ -0,0 +1,30 @@ +// Type definitions for delay 2.0 +// Project: https://github.com/sindresorhus/delay#readme +// Definitions by: BendingBender +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.3 + +export = delay; + +declare function delay(ms: number): delay.PDelayedPassThroughThunk; +declare function delay(ms: number, value: T): delay.PDelayedThunk; + +declare namespace delay { + function reject(ms: number, rejectionValue?: any): PDelayedThunk; + + class CancelError extends Error { + readonly name: 'CancelError'; + constructor(message?: string); + } + + type PDelayedThunk = ((value: any) => DelayedPromiseLike) & DelayedPromiseLike; + + type PDelayedPassThroughThunk = ((value: TValue) => DelayedPromiseLike) & DelayedPromiseLike; + + interface DelayedPromiseLike { + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, + onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise; + cancel(): void; + } +} diff --git a/types/delay/tsconfig.json b/types/delay/tsconfig.json new file mode 100644 index 0000000000..2004ba50ba --- /dev/null +++ b/types/delay/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "delay-tests.ts" + ] +} diff --git a/types/delay/tslint.json b/types/delay/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/delay/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }