UNPKG

900 BTypeScriptView Raw
1// Type definitions for co 4.6
2// Project: https://github.com/tj/co#readme
3// Definitions by: Doniyor Aliyev <https://github.com/doniyor2109>
4// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
5// TypeScript Version: 3.1
6
7type ExtractType<T> =
8 T extends { [Symbol.iterator](): { next(): { done: true, value: infer U } } } ? U :
9 T extends { [Symbol.iterator](): { next(): { done: false } } } ? never :
10 T extends { [Symbol.iterator](): { next(): { value: infer U } } } ? U :
11 T extends { [Symbol.iterator](): any } ? unknown :
12 never;
13
14interface Co {
15 <F extends (...args: any[]) => Iterator<any>>(fn: F, ...args: Parameters<F>): Promise<ExtractType<ReturnType<F>>>;
16 default: Co;
17 co: Co;
18 wrap: <F extends (...args: any[]) => Iterator<any>>(fn: F) => (...args: Parameters<F>) => Promise<ExtractType<ReturnType<F>>>;
19}
20
21declare const co: Co;
22
23export = co;