UNPKG

2.44 kBTypeScriptView Raw
1// Type definitions for once 1.4
2// Project: https://github.com/isaacs/once
3// Definitions by: Denis Sokolov <https://github.com/denis-sokolov>
4// BendingBender <https://github.com/BendingBender>
5// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
6
7export = once;
8
9declare const once: Once;
10
11interface Once extends once.OnceFn {
12 proto(): void;
13 strict: once.OnceFn;
14}
15
16declare namespace once {
17 interface OnceFn {
18 <R>(f: () => R): (() => R) & FnProps<R>;
19 <T1, R>(f: (t1: T1) => R): ((t1: T1) => R) & FnProps<R>;
20 <T1, T2, R>(f: (t1: T1, t2: T2) => R): ((t1: T1, t2: T2) => R) & FnProps<R>;
21 <T1, T2, T3, R>(f: (t1: T1, t2: T2, t3: T3) => R): ((t1: T1, t2: T2, t3: T3) => R) & FnProps<R>;
22 <T1, T2, T3, T4, R>(f: (t1: T1, t2: T2, t3: T3, t4: T4) => R): ((t1: T1, t2: T2, t3: T3, t4: T4) => R) & FnProps<R>;
23 <T1, T2, T3, T4, T5, R>(f: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5) => R): ((t1: T1, t2: T2, t3: T3, t4: T4, t5: T5) => R) & FnProps<R>;
24 <T1, T2, T3, T4, T5, T6, R>(f: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6) => R):
25 ((t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6) => R) & FnProps<R>;
26 <T1, T2, T3, T4, T5, T6, T7, R>(f: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7) => R):
27 ((t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7) => R) & FnProps<R>;
28 <T1, T2, T3, T4, T5, T6, T7, T8, R>(f: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8) => R):
29 ((t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8) => R) & FnProps<R>;
30 <T1, T2, T3, T4, T5, T6, T7, T8, T9, R>(f: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9) => R):
31 ((t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9) => R) & FnProps<R>;
32 <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, R>(f: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9, t10: T10) => R):
33 ((t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9, t10: T10) => R) & FnProps<R>;
34 <R>(f: (...args: any[]) => R): ((...args: any[]) => R) & FnProps<R>;
35 }
36
37 interface FnProps<R> {
38 called: boolean;
39 value: R | undefined;
40 }
41}
42
43declare global {
44 interface Function {
45 // tslint:disable-next-line ban-types
46 once(): Function & once.FnProps<any>;
47 }
48}
49
\No newline at end of file