UNPKG

94.2 kBTypeScriptView Raw
1import _ = require("../index");
2declare module "../index" {
3 interface LoDashStatic {
4 /**
5 * Assigns own enumerable properties of source objects to the destination
6 * object. Source objects are applied from left to right. Subsequent sources
7 * overwrite property assignments of previous sources.
8 *
9 * **Note:** This method mutates `object` and is loosely based on
10 * [`Object.assign`](https://mdn.io/Object/assign).
11 *
12 * @category Object
13 * @param object The destination object.
14 * @param [sources] The source objects.
15 * @returns Returns `object`.
16 * @example
17 *
18 * function Foo() {
19 * this.c = 3;
20 * }
21 *
22 * function Bar() {
23 * this.e = 5;
24 * }
25 *
26 * Foo.prototype.d = 4;
27 * Bar.prototype.f = 6;
28 *
29 * _.assign({ 'a': 1 }, new Foo, new Bar);
30 * // => { 'a': 1, 'c': 3, 'e': 5 }
31 */
32 assign<TObject, TSource>(object: TObject, source: TSource): TObject & TSource;
33 /**
34 * @see _.assign
35 */
36 assign<TObject, TSource1, TSource2>(object: TObject, source1: TSource1, source2: TSource2): TObject & TSource1 & TSource2;
37 /**
38 * @see _.assign
39 */
40 assign<TObject, TSource1, TSource2, TSource3>(object: TObject, source1: TSource1, source2: TSource2, source3: TSource3): TObject & TSource1 & TSource2 & TSource3;
41 /**
42 * @see _.assign
43 */
44 assign<TObject, TSource1, TSource2, TSource3, TSource4>(object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4): TObject & TSource1 & TSource2 & TSource3 & TSource4;
45 /**
46 * @see _.assign
47 */
48 assign<TObject>(object: TObject): TObject;
49 /**
50 * @see _.assign
51 */
52 assign(object: any, ...otherArgs: any[]): any;
53 }
54 interface Object<T> {
55 /**
56 * @see _.assign
57 */
58 assign<TSource>(source: TSource): Object<T & TSource>;
59 /**
60 * @see _.assign
61 */
62 assign<TSource1, TSource2>(source1: TSource1, source2: TSource2): Object<T & TSource1 & TSource2>;
63 /**
64 * @see _.assign
65 */
66 assign<TSource1, TSource2, TSource3>(source1: TSource1, source2: TSource2, source3: TSource3): Object<T & TSource1 & TSource2 & TSource3>;
67 /**
68 * @see _.assign
69 */
70 assign<TSource1, TSource2, TSource3, TSource4>(source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4): Object<T & TSource1 & TSource2 & TSource3 & TSource4>;
71 /**
72 * @see _.assign
73 */
74 assign(): Object<T>;
75 /**
76 * @see _.assign
77 */
78 assign(...otherArgs: any[]): Object<any>;
79 }
80 interface ObjectChain<T> {
81 /**
82 * @see _.assign
83 */
84 assign<TSource>(source: TSource): ObjectChain<T & TSource>;
85 /**
86 * @see _.assign
87 */
88 assign<TSource1, TSource2>(source1: TSource1, source2: TSource2): ObjectChain<T & TSource1 & TSource2>;
89 /**
90 * @see _.assign
91 */
92 assign<TSource1, TSource2, TSource3>(source1: TSource1, source2: TSource2, source3: TSource3): ObjectChain<T & TSource1 & TSource2 & TSource3>;
93 /**
94 * @see _.assign
95 */
96 assign<TSource1, TSource2, TSource3, TSource4>(source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4): ObjectChain<T & TSource1 & TSource2 & TSource3 & TSource4>;
97 /**
98 * @see _.assign
99 */
100 assign(): ObjectChain<T>;
101 /**
102 * @see _.assign
103 */
104 assign(...otherArgs: any[]): ObjectChain<any>;
105 }
106 interface LoDashStatic {
107 /**
108 * This method is like `_.assign` except that it iterates over own and
109 * inherited source properties.
110 *
111 * **Note:** This method mutates `object`.
112 *
113 * @alias extend
114 * @category Object
115 * @param object The destination object.
116 * @param [sources] The source objects.
117 * @returns Returns `object`.
118 * @example
119 *
120 * function Foo() {
121 * this.b = 2;
122 * }
123 *
124 * function Bar() {
125 * this.d = 4;
126 * }
127 *
128 * Foo.prototype.c = 3;
129 * Bar.prototype.e = 5;
130 *
131 * _.assignIn({ 'a': 1 }, new Foo, new Bar);
132 * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5 }
133 */
134 assignIn<TObject, TSource>(object: TObject, source: TSource): TObject & TSource;
135 /**
136 * @see _.assignIn
137 */
138 assignIn<TObject, TSource1, TSource2>(object: TObject, source1: TSource1, source2: TSource2): TObject & TSource1 & TSource2;
139 /**
140 * @see _.assignIn
141 */
142 assignIn<TObject, TSource1, TSource2, TSource3>(object: TObject, source1: TSource1, source2: TSource2, source3: TSource3): TObject & TSource1 & TSource2 & TSource3;
143 /**
144 * @see _.assignIn
145 */
146 assignIn<TObject, TSource1, TSource2, TSource3, TSource4>(object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4): TObject & TSource1 & TSource2 & TSource3 & TSource4;
147 /**
148 * @see _.assignIn
149 */
150 assignIn<TObject>(object: TObject): TObject;
151 /**
152 * @see _.assignIn
153 */
154 assignIn<TResult>(object: any, ...otherArgs: any[]): TResult;
155 }
156 interface Object<T> {
157 /**
158 * @see _.assignIn
159 */
160 assignIn<TSource>(source: TSource): Object<T & TSource>;
161 /**
162 * @see _.assignIn
163 */
164 assignIn<TSource1, TSource2>(source1: TSource1, source2: TSource2): Object<T & TSource1 & TSource2>;
165 /**
166 * @see _.assignIn
167 */
168 assignIn<TSource1, TSource2, TSource3>(source1: TSource1, source2: TSource2, source3: TSource3): Object<T & TSource1 & TSource2 & TSource3>;
169 /**
170 * @see _.assignIn
171 */
172 assignIn<TSource1, TSource2, TSource3, TSource4>(source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4): Object<T & TSource1 & TSource2 & TSource3 & TSource4>;
173 /**
174 * @see _.assignIn
175 */
176 assignIn(): Object<T>;
177 /**
178 * @see _.assignIn
179 */
180 assignIn<TResult>(...otherArgs: any[]): Object<TResult>;
181 }
182 interface ObjectChain<T> {
183 /**
184 * @see _.assignIn
185 */
186 assignIn<TSource>(source: TSource): ObjectChain<T & TSource>;
187 /**
188 * @see _.assignIn
189 */
190 assignIn<TSource1, TSource2>(source1: TSource1, source2: TSource2): ObjectChain<T & TSource1 & TSource2>;
191 /**
192 * @see _.assignIn
193 */
194 assignIn<TSource1, TSource2, TSource3>(source1: TSource1, source2: TSource2, source3: TSource3): ObjectChain<T & TSource1 & TSource2 & TSource3>;
195 /**
196 * @see _.assignIn
197 */
198 assignIn<TSource1, TSource2, TSource3, TSource4>(source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4): ObjectChain<T & TSource1 & TSource2 & TSource3 & TSource4>;
199 /**
200 * @see _.assignIn
201 */
202 assignIn(): ObjectChain<T>;
203 /**
204 * @see _.assignIn
205 */
206 assignIn(...otherArgs: any[]): ObjectChain<any>;
207 }
208 type AssignCustomizer = (objectValue: any, sourceValue: any, key?: string, object?: {}, source?: {}) => any;
209 interface LoDashStatic {
210 /**
211 * This method is like `_.assignIn` except that it accepts `customizer` which
212 * is invoked to produce the assigned values. If `customizer` returns `undefined`
213 * assignment is handled by the method instead. The `customizer` is invoked
214 * with five arguments: (objValue, srcValue, key, object, source).
215 *
216 * **Note:** This method mutates `object`.
217 *
218 * @alias extendWith
219 * @category Object
220 * @param object The destination object.
221 * @param sources The source objects.
222 * @param [customizer] The function to customize assigned values.
223 * @returns Returns `object`.
224 * @example
225 *
226 * function customizer(objValue, srcValue) {
227 * return _.isUndefined(objValue) ? srcValue : objValue;
228 * }
229 *
230 * var defaults = _.partialRight(_.assignInWith, customizer);
231 *
232 * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
233 * // => { 'a': 1, 'b': 2 }
234 */
235 assignInWith<TObject, TSource>(object: TObject, source: TSource, customizer: AssignCustomizer): TObject & TSource;
236 /**
237 * @see _.assignInWith
238 */
239 assignInWith<TObject, TSource1, TSource2>(object: TObject, source1: TSource1, source2: TSource2, customizer: AssignCustomizer): TObject & TSource1 & TSource2;
240 /**
241 * @see _.assignInWith
242 */
243 assignInWith<TObject, TSource1, TSource2, TSource3>(object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, customizer: AssignCustomizer): TObject & TSource1 & TSource2 & TSource3;
244 /**
245 * @see _.assignInWith
246 */
247 assignInWith<TObject, TSource1, TSource2, TSource3, TSource4>(object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4, customizer: AssignCustomizer): TObject & TSource1 & TSource2 & TSource3 & TSource4;
248 /**
249 * @see _.assignInWith
250 */
251 assignInWith<TObject>(object: TObject): TObject;
252 /**
253 * @see _.assignInWith
254 */
255 assignInWith<TResult>(object: any, ...otherArgs: any[]): TResult;
256 }
257 interface Object<T> {
258 /**
259 * @see _.assignInWith
260 */
261 assignInWith<TSource>(source: TSource, customizer: AssignCustomizer): Object<T & TSource>;
262 /**
263 * @see _.assignInWith
264 */
265 assignInWith<TSource1, TSource2>(source1: TSource1, source2: TSource2, customizer: AssignCustomizer): Object<T & TSource1 & TSource2>;
266 /**
267 * @see _.assignInWith
268 */
269 assignInWith<TSource1, TSource2, TSource3>(source1: TSource1, source2: TSource2, source3: TSource3, customizer: AssignCustomizer): Object<T & TSource1 & TSource2 & TSource3>;
270 /**
271 * @see _.assignInWith
272 */
273 assignInWith<TSource1, TSource2, TSource3, TSource4>(source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4, customizer: AssignCustomizer): Object<T & TSource1 & TSource2 & TSource3 & TSource4>;
274 /**
275 * @see _.assignInWith
276 */
277 assignInWith(): Object<T>;
278 /**
279 * @see _.assignInWith
280 */
281 assignInWith<TResult>(...otherArgs: any[]): Object<TResult>;
282 }
283 interface ObjectChain<T> {
284 /**
285 * @see _.assignInWith
286 */
287 assignInWith<TSource>(source: TSource, customizer: AssignCustomizer): ObjectChain<T & TSource>;
288 /**
289 * @see _.assignInWith
290 */
291 assignInWith<TSource1, TSource2>(source1: TSource1, source2: TSource2, customizer: AssignCustomizer): ObjectChain<T & TSource1 & TSource2>;
292 /**
293 * @see _.assignInWith
294 */
295 assignInWith<TSource1, TSource2, TSource3>(source1: TSource1, source2: TSource2, source3: TSource3, customizer: AssignCustomizer): ObjectChain<T & TSource1 & TSource2 & TSource3>;
296 /**
297 * @see _.assignInWith
298 */
299 assignInWith<TSource1, TSource2, TSource3, TSource4>(source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4, customizer: AssignCustomizer): ObjectChain<T & TSource1 & TSource2 & TSource3 & TSource4>;
300 /**
301 * @see _.assignInWith
302 */
303 assignInWith(): ObjectChain<T>;
304 /**
305 * @see _.assignInWith
306 */
307 assignInWith(...otherArgs: any[]): ObjectChain<any>;
308 }
309 interface LoDashStatic {
310 /**
311 * This method is like `_.assign` except that it accepts `customizer` which
312 * is invoked to produce the assigned values. If `customizer` returns `undefined`
313 * assignment is handled by the method instead. The `customizer` is invoked
314 * with five arguments: (objValue, srcValue, key, object, source).
315 *
316 * **Note:** This method mutates `object`.
317 *
318 * @category Object
319 * @param object The destination object.
320 * @param sources The source objects.
321 * @param [customizer] The function to customize assigned values.
322 * @returns Returns `object`.
323 * @example
324 *
325 * function customizer(objValue, srcValue) {
326 * return _.isUndefined(objValue) ? srcValue : objValue;
327 * }
328 *
329 * var defaults = _.partialRight(_.assignWith, customizer);
330 *
331 * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
332 * // => { 'a': 1, 'b': 2 }
333 */
334 assignWith<TObject, TSource>(object: TObject, source: TSource, customizer: AssignCustomizer): TObject & TSource;
335 /**
336 * @see _.assignWith
337 */
338 assignWith<TObject, TSource1, TSource2>(object: TObject, source1: TSource1, source2: TSource2, customizer: AssignCustomizer): TObject & TSource1 & TSource2;
339 /**
340 * @see _.assignWith
341 */
342 assignWith<TObject, TSource1, TSource2, TSource3>(object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, customizer: AssignCustomizer): TObject & TSource1 & TSource2 & TSource3;
343 /**
344 * @see _.assignWith
345 */
346 assignWith<TObject, TSource1, TSource2, TSource3, TSource4>(object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4, customizer: AssignCustomizer): TObject & TSource1 & TSource2 & TSource3 & TSource4;
347 /**
348 * @see _.assignWith
349 */
350 assignWith<TObject>(object: TObject): TObject;
351 /**
352 * @see _.assignWith
353 */
354 assignWith<TResult>(object: any, ...otherArgs: any[]): TResult;
355 }
356 interface Object<T> {
357 /**
358 * @see _.assignWith
359 */
360 assignWith<TSource>(source: TSource, customizer: AssignCustomizer): Object<T & TSource>;
361 /**
362 * @see _.assignWith
363 */
364 assignWith<TSource1, TSource2>(source1: TSource1, source2: TSource2, customizer: AssignCustomizer): Object<T & TSource1 & TSource2>;
365 /**
366 * @see _.assignWith
367 */
368 assignWith<TSource1, TSource2, TSource3>(source1: TSource1, source2: TSource2, source3: TSource3, customizer: AssignCustomizer): Object<T & TSource1 & TSource2 & TSource3>;
369 /**
370 * @see _.assignWith
371 */
372 assignWith<TSource1, TSource2, TSource3, TSource4>(source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4, customizer: AssignCustomizer): Object<T & TSource1 & TSource2 & TSource3 & TSource4>;
373 /**
374 * @see _.assignWith
375 */
376 assignWith(): Object<T>;
377 /**
378 * @see _.assignWith
379 */
380 assignWith<TResult>(...otherArgs: any[]): Object<TResult>;
381 }
382 interface ObjectChain<T> {
383 /**
384 * @see _.assignWith
385 */
386 assignWith<TSource>(source: TSource, customizer: AssignCustomizer): ObjectChain<T & TSource>;
387 /**
388 * @see _.assignWith
389 */
390 assignWith<TSource1, TSource2>(source1: TSource1, source2: TSource2, customizer: AssignCustomizer): ObjectChain<T & TSource1 & TSource2>;
391 /**
392 * @see _.assignWith
393 */
394 assignWith<TSource1, TSource2, TSource3>(source1: TSource1, source2: TSource2, source3: TSource3, customizer: AssignCustomizer): ObjectChain<T & TSource1 & TSource2 & TSource3>;
395 /**
396 * @see _.assignWith
397 */
398 assignWith<TSource1, TSource2, TSource3, TSource4>(source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4, customizer: AssignCustomizer): ObjectChain<T & TSource1 & TSource2 & TSource3 & TSource4>;
399 /**
400 * @see _.assignWith
401 */
402 assignWith(): ObjectChain<T>;
403 /**
404 * @see _.assignWith
405 */
406 assignWith(...otherArgs: any[]): ObjectChain<any>;
407 }
408 interface LoDashStatic {
409 /**
410 * Creates an array of elements corresponding to the given keys, or indexes, of collection. Keys may be
411 * specified as individual arguments or as arrays of keys.
412 *
413 * @param object The object to iterate over.
414 * @param props The property names or indexes of elements to pick, specified individually or in arrays.
415 * @return Returns the new array of picked elements.
416 */
417 at<T>(object: Dictionary<T> | NumericDictionary<T> | null | undefined, ...props: PropertyPath[]): T[];
418 /**
419 * @see _.at
420 */
421 at<T extends object>(object: T | null | undefined, ...props: Array<Many<keyof T>>): Array<T[keyof T]>;
422 }
423 interface Object<T> {
424 /**
425 * @see _.at
426 */
427 at(...props: Array<Many<keyof T>>): Collection<T[keyof T]>;
428 }
429 interface Collection<T> {
430 /**
431 * @see _.at
432 */
433 at(...props: PropertyPath[]): Collection<T>;
434 }
435 interface ObjectChain<T> {
436 /**
437 * @see _.at
438 */
439 at(...props: Array<Many<keyof T>>): CollectionChain<T[keyof T]>;
440 }
441 interface CollectionChain<T> {
442 /**
443 * @see _.at
444 */
445 at(...props: PropertyPath[]): CollectionChain<T>;
446 }
447 interface LoDashStatic {
448 /**
449 * Creates an object that inherits from the given prototype object. If a properties object is provided its own
450 * enumerable properties are assigned to the created object.
451 *
452 * @param prototype The object to inherit from.
453 * @param properties The properties to assign to the object.
454 * @return Returns the new object.
455 */
456 create<T extends object, U extends object>(prototype: T, properties?: U): T & U;
457 }
458 interface Object<T> {
459 /**
460 * @see _.create
461 */
462 create<U extends object>(properties?: U): Object<T & U>;
463 }
464 interface ObjectChain<T> {
465 /**
466 * @see _.create
467 */
468 create<U extends object>(properties?: U): ObjectChain<T & U>;
469 }
470 interface LoDashStatic {
471 /**
472 * Assigns own enumerable properties of source object(s) to the destination object for all destination
473 * properties that resolve to undefined. Once a property is set, additional values of the same property are
474 * ignored.
475 *
476 * Note: This method mutates object.
477 *
478 * @param object The destination object.
479 * @param sources The source objects.
480 * @return The destination object.
481 */
482 defaults<TObject, TSource>(object: TObject, source: TSource): TSource & TObject;
483 /**
484 * @see _.defaults
485 */
486 defaults<TObject, TSource1, TSource2>(object: TObject, source1: TSource1, source2: TSource2): TSource2 & TSource1 & TObject;
487 /**
488 * @see _.defaults
489 */
490 defaults<TObject, TSource1, TSource2, TSource3>(object: TObject, source1: TSource1, source2: TSource2, source3: TSource3): TSource3 & TSource2 & TSource1 & TObject;
491 /**
492 * @see _.defaults
493 */
494 defaults<TObject, TSource1, TSource2, TSource3, TSource4>(object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4): TSource4 & TSource3 & TSource2 & TSource1 & TObject;
495 /**
496 * @see _.defaults
497 */
498 defaults<TObject>(object: TObject): TObject;
499 /**
500 * @see _.defaults
501 */
502 defaults(object: any, ...sources: any[]): any;
503 }
504 interface Object<T> {
505 /**
506 * @see _.defaults
507 */
508 defaults<TSource>(source: TSource): Object<TSource & T>;
509 /**
510 * @see _.defaults
511 */
512 defaults<TSource1, TSource2>(source1: TSource1, source2: TSource2): Object<TSource2 & TSource1 & T>;
513 /**
514 * @see _.defaults
515 */
516 defaults<TSource1, TSource2, TSource3>(source1: TSource1, source2: TSource2, source3: TSource3): Object<TSource3 & TSource2 & TSource1 & T>;
517 /**
518 * @see _.defaults
519 */
520 defaults<TSource1, TSource2, TSource3, TSource4>(source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4): Object<TSource4 & TSource3 & TSource2 & TSource1 & T>;
521 /**
522 * @see _.defaults
523 */
524 defaults(): Object<T>;
525 /**
526 * @see _.defaults
527 */
528 defaults(...sources: any[]): Object<any>;
529 }
530 interface ObjectChain<T> {
531 /**
532 * @see _.defaults
533 */
534 defaults<TSource>(source: TSource): ObjectChain<TSource & T>;
535 /**
536 * @see _.defaults
537 */
538 defaults<TSource1, TSource2>(source1: TSource1, source2: TSource2): ObjectChain<TSource2 & TSource1 & T>;
539 /**
540 * @see _.defaults
541 */
542 defaults<TSource1, TSource2, TSource3>(source1: TSource1, source2: TSource2, source3: TSource3): ObjectChain<TSource3 & TSource2 & TSource1 & T>;
543 /**
544 * @see _.defaults
545 */
546 defaults<TSource1, TSource2, TSource3, TSource4>(source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4): ObjectChain<TSource4 & TSource3 & TSource2 & TSource1 & T>;
547 /**
548 * @see _.defaults
549 */
550 defaults(): ObjectChain<T>;
551 /**
552 * @see _.defaults
553 */
554 defaults(...sources: any[]): ObjectChain<any>;
555 }
556 interface LoDashStatic {
557 /**
558 * This method is like _.defaults except that it recursively assigns default properties.
559 * @param object The destination object.
560 * @param sources The source objects.
561 * @return Returns object.
562 */
563 defaultsDeep(object: any, ...sources: any[]): any;
564 }
565 interface Object<T> {
566 /**
567 * @see _.defaultsDeep
568 */
569 defaultsDeep(...sources: any[]): Object<any>;
570 }
571 interface ObjectChain<T> {
572 /**
573 * @see _.defaultsDeep
574 */
575 defaultsDeep(...sources: any[]): ObjectChain<any>;
576 }
577 interface LoDashStatic {
578 /**
579 * @see _.toPairs
580 */
581 entries<T>(object?: Dictionary<T> | NumericDictionary<T>): Array<[string, T]>;
582 /**
583 * @see _.entries
584 */
585 entries(object?: object): Array<[string, any]>;
586 }
587 interface Object<T> {
588 /**
589 * @see _.entries
590 */
591 entries(): Collection<[string, T[keyof T]]>;
592 }
593 interface LoDashImplicitWrapper<TValue> {
594 /**
595 * @see _.entries
596 */
597 entries(): Collection<[string, any]>;
598 }
599 interface ObjectChain<T> {
600 /**
601 * @see _.entries
602 */
603 entries(): CollectionChain<[string, T[keyof T]]>;
604 }
605 interface LoDashExplicitWrapper<TValue> {
606 /**
607 * @see _.entries
608 */
609 entries(): CollectionChain<[string, any]>;
610 }
611 interface LoDashStatic {
612 /**
613 * @see _.entriesIn
614 */
615 entriesIn<T>(object?: Dictionary<T> | NumericDictionary<T>): Array<[string, T]>;
616 /**
617 * @see _.entriesIn
618 */
619 entriesIn(object?: object): Array<[string, any]>;
620 }
621 interface Object<T> {
622 /**
623 * @see _.entriesIn
624 */
625 entriesIn(): Collection<[string, T[keyof T]]>;
626 }
627 interface LoDashImplicitWrapper<TValue> {
628 /**
629 * @see _.entriesIn
630 */
631 entriesIn(): Collection<[string, any]>;
632 }
633 interface ObjectChain<T> {
634 /**
635 * @see _.entriesIn
636 */
637 entriesIn(): CollectionChain<[string, T[keyof T]]>;
638 }
639 interface LoDashExplicitWrapper<TValue> {
640 /**
641 * @see _.entriesIn
642 */
643 entriesIn(): CollectionChain<[string, any]>;
644 }
645 interface LoDashStatic {
646 /**
647 * @see _.extend
648 */
649 extend<TObject, TSource>(object: TObject, source: TSource): TObject & TSource;
650 /**
651 * @see _.extend
652 */
653 extend<TObject, TSource1, TSource2>(object: TObject, source1: TSource1, source2: TSource2): TObject & TSource1 & TSource2;
654 /**
655 * @see _.extend
656 */
657 extend<TObject, TSource1, TSource2, TSource3>(object: TObject, source1: TSource1, source2: TSource2, source3: TSource3): TObject & TSource1 & TSource2 & TSource3;
658 /**
659 * @see _.extend
660 */
661 extend<TObject, TSource1, TSource2, TSource3, TSource4>(object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4): TObject & TSource1 & TSource2 & TSource3 & TSource4;
662 /**
663 * @see _.extend
664 */
665 extend<TObject>(object: TObject): TObject;
666 /**
667 * @see _.extend
668 */
669 extend<TResult>(object: any, ...otherArgs: any[]): TResult;
670 }
671 interface Object<T> {
672 /**
673 * @see _.extend
674 */
675 extend<TSource>(source: TSource): Object<T & TSource>;
676 /**
677 * @see _.extend
678 */
679 extend<TSource1, TSource2>(source1: TSource1, source2: TSource2): Object<T & TSource1 & TSource2>;
680 /**
681 * @see _.extend
682 */
683 extend<TSource1, TSource2, TSource3>(source1: TSource1, source2: TSource2, source3: TSource3): Object<T & TSource1 & TSource2 & TSource3>;
684 /**
685 * @see _.extend
686 */
687 extend<TSource1, TSource2, TSource3, TSource4>(source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4): Object<T & TSource1 & TSource2 & TSource3 & TSource4>;
688 /**
689 * @see _.extend
690 */
691 extend(): Object<T>;
692 /**
693 * @see _.extend
694 */
695 extend(...otherArgs: any[]): Object<any>;
696 }
697 interface ObjectChain<T> {
698 /**
699 * @see _.extend
700 */
701 extend<TSource>(source: TSource): ObjectChain<T & TSource>;
702 /**
703 * @see _.extend
704 */
705 extend<TSource1, TSource2>(source1: TSource1, source2: TSource2): ObjectChain<T & TSource1 & TSource2>;
706 /**
707 * @see _.extend
708 */
709 extend<TSource1, TSource2, TSource3>(source1: TSource1, source2: TSource2, source3: TSource3): ObjectChain<T & TSource1 & TSource2 & TSource3>;
710 /**
711 * @see _.extend
712 */
713 extend<TSource1, TSource2, TSource3, TSource4>(source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4): ObjectChain<T & TSource1 & TSource2 & TSource3 & TSource4>;
714 /**
715 * @see _.extend
716 */
717 extend(): ObjectChain<T>;
718 /**
719 * @see _.extend
720 */
721 extend(...otherArgs: any[]): ObjectChain<any>;
722 }
723 interface LoDashStatic {
724 /**
725 * @see _.extendWith
726 */
727 extendWith<TObject, TSource>(object: TObject, source: TSource, customizer: AssignCustomizer): TObject & TSource;
728 /**
729 * @see _.extendWith
730 */
731 extendWith<TObject, TSource1, TSource2>(object: TObject, source1: TSource1, source2: TSource2, customizer: AssignCustomizer): TObject & TSource1 & TSource2;
732 /**
733 * @see _.extendWith
734 */
735 extendWith<TObject, TSource1, TSource2, TSource3>(object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, customizer: AssignCustomizer): TObject & TSource1 & TSource2 & TSource3;
736 /**
737 * @see _.extendWith
738 */
739 extendWith<TObject, TSource1, TSource2, TSource3, TSource4>(object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4, customizer: AssignCustomizer): TObject & TSource1 & TSource2 & TSource3 & TSource4;
740 /**
741 * @see _.extendWith
742 */
743 extendWith<TObject>(object: TObject): TObject;
744 /**
745 * @see _.extendWith
746 */
747 extendWith<TResult>(object: any, ...otherArgs: any[]): TResult;
748 }
749 interface Object<T> {
750 /**
751 * @see _.extendWith
752 */
753 extendWith<TSource>(source: TSource, customizer: AssignCustomizer): Object<T & TSource>;
754 /**
755 * @see _.extendWith
756 */
757 extendWith<TSource1, TSource2>(source1: TSource1, source2: TSource2, customizer: AssignCustomizer): Object<T & TSource1 & TSource2>;
758 /**
759 * @see _.extendWith
760 */
761 extendWith<TSource1, TSource2, TSource3>(source1: TSource1, source2: TSource2, source3: TSource3, customizer: AssignCustomizer): Object<T & TSource1 & TSource2 & TSource3>;
762 /**
763 * @see _.extendWith
764 */
765 extendWith<TSource1, TSource2, TSource3, TSource4>(source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4, customizer: AssignCustomizer): Object<T & TSource1 & TSource2 & TSource3 & TSource4>;
766 /**
767 * @see _.extendWith
768 */
769 extendWith(): Object<T>;
770 /**
771 * @see _.extendWith
772 */
773 extendWith(...otherArgs: any[]): Object<any>;
774 }
775 interface ObjectChain<T> {
776 /**
777 * @see _.extendWith
778 */
779 extendWith<TSource>(source: TSource, customizer: AssignCustomizer): ObjectChain<T & TSource>;
780 /**
781 * @see _.extendWith
782 */
783 extendWith<TSource1, TSource2>(source1: TSource1, source2: TSource2, customizer: AssignCustomizer): ObjectChain<T & TSource1 & TSource2>;
784 /**
785 * @see _.extendWith
786 */
787 extendWith<TSource1, TSource2, TSource3>(source1: TSource1, source2: TSource2, source3: TSource3, customizer: AssignCustomizer): ObjectChain<T & TSource1 & TSource2 & TSource3>;
788 /**
789 * @see _.extendWith
790 */
791 extendWith<TSource1, TSource2, TSource3, TSource4>(source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4, customizer: AssignCustomizer): ObjectChain<T & TSource1 & TSource2 & TSource3 & TSource4>;
792 /**
793 * @see _.extendWith
794 */
795 extendWith(): ObjectChain<T>;
796 /**
797 * @see _.extendWith
798 */
799 extendWith(...otherArgs: any[]): ObjectChain<any>;
800 }
801 interface LoDashStatic {
802 /**
803 * This method is like _.find except that it returns the key of the first element predicate returns truthy for
804 * instead of the element itself.
805 *
806 * @param object The object to search.
807 * @param predicate The function invoked per iteration.
808 * @return Returns the key of the matched element, else undefined.
809 */
810 findKey<T>(object: T | null | undefined, predicate?: ObjectIteratee<T>): string | undefined;
811 }
812 interface LoDashImplicitWrapper<TValue> {
813 /**
814 * @see _.findKey
815 */
816 findKey(predicate?: ObjectIteratee<TValue>): string | undefined;
817 }
818 interface LoDashExplicitWrapper<TValue> {
819 /**
820 * @see _.findKey
821 */
822 findKey(predicate?: ObjectIteratee<TValue>): StringNullableChain;
823 }
824 interface LoDashStatic {
825 /**
826 * This method is like _.findKey except that it iterates over elements of a collection in the opposite order.
827 *
828 * @param object The object to search.
829 * @param predicate The function invoked per iteration.
830 * @return Returns the key of the matched element, else undefined.
831 */
832 findLastKey<T>(object: T | null | undefined, predicate?: ObjectIteratee<T>): string | undefined;
833 }
834 interface LoDashImplicitWrapper<TValue> {
835 /**
836 * @see _.findLastKey
837 */
838 findLastKey(predicate?: ObjectIteratee<TValue>): string | undefined;
839 }
840 interface LoDashExplicitWrapper<TValue> {
841 /**
842 * @see _.findLastKey
843 */
844 findLastKey(predicate?: ObjectIteratee<TValue>): StringNullableChain;
845 }
846 interface LoDashStatic {
847 /**
848 * Iterates over own and inherited enumerable properties of an object invoking iteratee for each property. The
849 * iteratee is invoked with three arguments: (value, key, object). Iteratee functions may
850 * exit iteration early by explicitly returning false.
851 *
852 * @param object The object to iterate over.
853 * @param iteratee The function invoked per iteration.
854 * @return Returns object.
855 */
856 forIn<T>(object: T, iteratee?: ObjectIterator<T, any>): T;
857 /**
858 * @see _.forIn
859 */
860 forIn<T>(object: T | null | undefined, iteratee?: ObjectIterator<T, any>): T | null | undefined;
861 }
862 interface LoDashImplicitWrapper<TValue> {
863 /**
864 * @see _.forIn
865 */
866 forIn(iteratee?: ObjectIterator<TValue, any>): this;
867 }
868 interface LoDashExplicitWrapper<TValue> {
869 /**
870 * @see _.forIn
871 */
872 forIn(iteratee?: ObjectIterator<TValue, any>): this;
873 }
874 interface LoDashStatic {
875 /**
876 * This method is like _.forIn except that it iterates over properties of object in the opposite order.
877 *
878 * @param object The object to iterate over.
879 * @param iteratee The function invoked per iteration.
880 * @return Returns object.
881 */
882 forInRight<T>(object: T, iteratee?: ObjectIterator<T, any>): T;
883 /**
884 * @see _.forInRight
885 */
886 forInRight<T>(object: T | null | undefined, iteratee?: ObjectIterator<T, any>): T | null | undefined;
887 }
888 interface LoDashImplicitWrapper<TValue> {
889 /**
890 * @see _.forInRight
891 */
892 forInRight(iteratee?: ObjectIterator<TValue, any>): this;
893 }
894 interface LoDashExplicitWrapper<TValue> {
895 /**
896 * @see _.forInRight
897 */
898 forInRight(iteratee?: ObjectIterator<TValue, any>): this;
899 }
900 interface LoDashStatic {
901 /**
902 * Iterates over own enumerable properties of an object invoking iteratee for each property. The iteratee is
903 * invoked with three arguments: (value, key, object). Iteratee functions may exit
904 * iteration early by explicitly returning false.
905 *
906 * @param object The object to iterate over.
907 * @param iteratee The function invoked per iteration.
908 * @return Returns object.
909 */
910 forOwn<T>(object: T, iteratee?: ObjectIterator<T, any>): T;
911 /**
912 * @see _.forOwn
913 */
914 forOwn<T>(object: T | null | undefined, iteratee?: ObjectIterator<T, any>): T | null | undefined;
915 }
916 interface LoDashImplicitWrapper<TValue> {
917 /**
918 * @see _.forOwn
919 */
920 forOwn(iteratee?: ObjectIterator<TValue, any>): this;
921 }
922 interface LoDashExplicitWrapper<TValue> {
923 /**
924 * @see _.forOwn
925 */
926 forOwn(iteratee?: ObjectIterator<TValue, any>): this;
927 }
928 interface LoDashStatic {
929 /**
930 * This method is like _.forOwn except that it iterates over properties of object in the opposite order.
931 *
932 * @param object The object to iterate over.
933 * @param iteratee The function invoked per iteration.
934 * @return Returns object.
935 */
936 forOwnRight<T>(object: T, iteratee?: ObjectIterator<T, any>): T;
937 /**
938 * @see _.forOwnRight
939 */
940 forOwnRight<T>(object: T | null | undefined, iteratee?: ObjectIterator<T, any>): T | null | undefined;
941 }
942 interface LoDashImplicitWrapper<TValue> {
943 /**
944 * @see _.forOwnRight
945 */
946 forOwnRight(iteratee?: ObjectIterator<TValue, any>): this;
947 }
948 interface LoDashExplicitWrapper<TValue> {
949 /**
950 * @see _.forOwnRight
951 */
952 forOwnRight(iteratee?: ObjectIterator<TValue, any>): this;
953 }
954 interface LoDashStatic {
955 /**
956 * Creates an array of function property names from own enumerable properties
957 * of `object`.
958 *
959 * @category Object
960 * @param object The object to inspect.
961 * @returns Returns the new array of property names.
962 * @example
963 *
964 * function Foo() {
965 * this.a = _.constant('a');
966 * this.b = _.constant('b');
967 * }
968 *
969 * Foo.prototype.c = _.constant('c');
970 *
971 * _.functions(new Foo);
972 * // => ['a', 'b']
973 */
974 functions(object: any): string[];
975 }
976 interface LoDashImplicitWrapper<TValue> {
977 /**
978 * @see _.functions
979 */
980 functions(): Collection<string>;
981 }
982 interface LoDashExplicitWrapper<TValue> {
983 /**
984 * @see _.functions
985 */
986 functions(): CollectionChain<string>;
987 }
988 interface LoDashStatic {
989 /**
990 * Creates an array of function property names from own and inherited
991 * enumerable properties of `object`.
992 *
993 * @category Object
994 * @param object The object to inspect.
995 * @returns Returns the new array of property names.
996 * @example
997 *
998 * function Foo() {
999 * this.a = _.constant('a');
1000 * this.b = _.constant('b');
1001 * }
1002 *
1003 * Foo.prototype.c = _.constant('c');
1004 *
1005 * _.functionsIn(new Foo);
1006 * // => ['a', 'b', 'c']
1007 */
1008 functionsIn<T extends {}>(object: any): string[];
1009 }
1010 interface LoDashImplicitWrapper<TValue> {
1011 /**
1012 * @see _.functionsIn
1013 */
1014 functionsIn(): Collection<string>;
1015 }
1016 interface LoDashExplicitWrapper<TValue> {
1017 /**
1018 * @see _.functionsIn
1019 */
1020 functionsIn(): CollectionChain<string>;
1021 }
1022 interface LoDashStatic {
1023 /**
1024 * Gets the property value at path of object. If the resolved value is undefined the defaultValue is used
1025 * in its place.
1026 *
1027 * @param object The object to query.
1028 * @param path The path of the property to get.
1029 * @param defaultValue The value returned if the resolved value is undefined.
1030 * @return Returns the resolved value.
1031 */
1032 get<TObject extends object, TKey extends keyof TObject>(object: TObject, path: TKey | [TKey]): TObject[TKey];
1033 /**
1034 * @see _.get
1035 */
1036 get<TObject extends object, TKey extends keyof TObject>(object: TObject | null | undefined, path: TKey | [TKey]): TObject[TKey] | undefined;
1037 /**
1038 * @see _.get
1039 */
1040 get<TObject extends object, TKey extends keyof TObject, TDefault>(object: TObject | null | undefined, path: TKey | [TKey], defaultValue: TDefault): Exclude<TObject[TKey], undefined> | TDefault;
1041 /**
1042 * @see _.get
1043 */
1044 get<TObject extends object, TKey1 extends keyof TObject, TKey2 extends keyof TObject[TKey1]>(object: TObject, path: [TKey1, TKey2]): TObject[TKey1][TKey2];
1045 /**
1046 * @see _.get
1047 */
1048 get<TObject extends object, TKey1 extends keyof TObject, TKey2 extends keyof TObject[TKey1]>(object: TObject | null | undefined, path: [TKey1, TKey2]): TObject[TKey1][TKey2] | undefined;
1049 /**
1050 * @see _.get
1051 */
1052 get<TObject extends object, TKey1 extends keyof TObject, TKey2 extends keyof TObject[TKey1], TDefault>(object: TObject | null | undefined, path: [TKey1, TKey2], defaultValue: TDefault): Exclude<TObject[TKey1][TKey2], undefined> | TDefault;
1053 /**
1054 * @see _.get
1055 */
1056 get<TObject extends object, TKey1 extends keyof TObject, TKey2 extends keyof TObject[TKey1], TKey3 extends keyof TObject[TKey1][TKey2]>(object: TObject, path: [TKey1, TKey2, TKey3]): TObject[TKey1][TKey2][TKey3];
1057 /**
1058 * @see _.get
1059 */
1060 get<TObject extends object, TKey1 extends keyof TObject, TKey2 extends keyof TObject[TKey1], TKey3 extends keyof TObject[TKey1][TKey2]>(object: TObject | null | undefined, path: [TKey1, TKey2, TKey3]): TObject[TKey1][TKey2][TKey3] | undefined;
1061 /**
1062 * @see _.get
1063 */
1064 get<TObject extends object, TKey1 extends keyof TObject, TKey2 extends keyof TObject[TKey1], TKey3 extends keyof TObject[TKey1][TKey2], TDefault>(object: TObject | null | undefined, path: [TKey1, TKey2, TKey3], defaultValue: TDefault): Exclude<TObject[TKey1][TKey2][TKey3], undefined> | TDefault;
1065 /**
1066 * @see _.get
1067 */
1068 get<TObject extends object, TKey1 extends keyof TObject, TKey2 extends keyof TObject[TKey1], TKey3 extends keyof TObject[TKey1][TKey2], TKey4 extends keyof TObject[TKey1][TKey2][TKey3]>(object: TObject, path: [TKey1, TKey2, TKey3, TKey4]): TObject[TKey1][TKey2][TKey3][TKey4];
1069 /**
1070 * @see _.get
1071 */
1072 get<TObject extends object, TKey1 extends keyof TObject, TKey2 extends keyof TObject[TKey1], TKey3 extends keyof TObject[TKey1][TKey2], TKey4 extends keyof TObject[TKey1][TKey2][TKey3]>(object: TObject | null | undefined, path: [TKey1, TKey2, TKey3, TKey4]): TObject[TKey1][TKey2][TKey3][TKey4] | undefined;
1073 /**
1074 * @see _.get
1075 */
1076 get<TObject extends object, TKey1 extends keyof TObject, TKey2 extends keyof TObject[TKey1], TKey3 extends keyof TObject[TKey1][TKey2], TKey4 extends keyof TObject[TKey1][TKey2][TKey3], TDefault>(object: TObject | null | undefined, path: [TKey1, TKey2, TKey3, TKey4], defaultValue: TDefault): Exclude<TObject[TKey1][TKey2][TKey3][TKey4], undefined> | TDefault;
1077 /**
1078 * @see _.get
1079 */
1080 get<T>(object: NumericDictionary<T>, path: number): T;
1081 /**
1082 * @see _.get
1083 */
1084 get<T>(object: NumericDictionary<T> | null | undefined, path: number): T | undefined;
1085 /**
1086 * @see _.get
1087 */
1088 get<T, TDefault>(object: NumericDictionary<T> | null | undefined, path: number, defaultValue: TDefault): T | TDefault;
1089 /**
1090 * @see _.get
1091 */
1092 get<TDefault>(object: null | undefined, path: PropertyPath, defaultValue: TDefault): TDefault;
1093 /**
1094 * @see _.get
1095 */
1096 get(object: null | undefined, path: PropertyPath): undefined;
1097 /**
1098 * @see _.get
1099 */
1100 get(object: any, path: PropertyPath, defaultValue?: any): any;
1101 }
1102 interface String {
1103 /**
1104 * @see _.get
1105 */
1106 get(path: number | number[]): string;
1107 /**
1108 * @see _.get
1109 */
1110 get(path: number | number[], defaultValue: string): string;
1111 }
1112 interface Object<T> {
1113 /**
1114 * @see _.get
1115 */
1116 get<TKey extends keyof T>(path: TKey | [TKey]): T[TKey];
1117 /**
1118 * @see _.get
1119 */
1120 get<TKey extends keyof T, TDefault>(path: TKey | [TKey], defaultValue: TDefault): Exclude<T[TKey], undefined> | TDefault;
1121 /**
1122 * @see _.get
1123 */
1124 get<TKey1 extends keyof T, TKey2 extends keyof T[TKey1]>(path: [TKey1, TKey2]): T[TKey1][TKey2];
1125 /**
1126 * @see _.get
1127 */
1128 get<TKey1 extends keyof T, TKey2 extends keyof T[TKey1], TDefault>(path: [TKey1, TKey2], defaultValue: TDefault): Exclude<T[TKey1][TKey2], undefined> | TDefault;
1129 /**
1130 * @see _.get
1131 */
1132 get<TKey1 extends keyof T, TKey2 extends keyof T[TKey1], TKey3 extends keyof T[TKey1][TKey2]>(path: [TKey1, TKey2, TKey3]): T[TKey1][TKey2][TKey3];
1133 /**
1134 * @see _.get
1135 */
1136 get<TKey1 extends keyof T, TKey2 extends keyof T[TKey1], TKey3 extends keyof T[TKey1][TKey2], TDefault>(path: [TKey1, TKey2, TKey3], defaultValue: TDefault): Exclude<T[TKey1][TKey2][TKey3], undefined> | TDefault;
1137 /**
1138 * @see _.get
1139 */
1140 get<TKey1 extends keyof T, TKey2 extends keyof T[TKey1], TKey3 extends keyof T[TKey1][TKey2], TKey4 extends keyof T[TKey1][TKey2][TKey3]>(path: [TKey1, TKey2, TKey3, TKey4]): T[TKey1][TKey2][TKey3][TKey4];
1141 /**
1142 * @see _.get
1143 */
1144 get<TKey1 extends keyof T, TKey2 extends keyof T[TKey1], TKey3 extends keyof T[TKey1][TKey2], TKey4 extends keyof T[TKey1][TKey2][TKey3], TDefault>(path: [TKey1, TKey2, TKey3, TKey4], defaultValue: TDefault): Exclude<T[TKey1][TKey2][TKey3][TKey4], undefined> | TDefault;
1145 /**
1146 * @see _.get
1147 */
1148 get(path: PropertyPath, defaultValue?: any): any;
1149 }
1150 interface Collection<T> {
1151 /**
1152 * @see _.get
1153 */
1154 get(path: number): T;
1155 /**
1156 * @see _.get
1157 */
1158 get<TDefault>(path: number, defaultValue: TDefault): T | TDefault;
1159 }
1160 interface StringChain {
1161 /**
1162 * @see _.get
1163 */
1164 get(path: number | number[]): StringChain;
1165 /**
1166 * @see _.get
1167 */
1168 get(path: number | number[], defaultValue: string): StringChain;
1169 }
1170 interface StringNullableChain {
1171 /**
1172 * @see _.get
1173 */
1174 get(path: number | number[]): StringNullableChain;
1175 /**
1176 * @see _.get
1177 */
1178 get(path: number | number[], defaultValue: string): StringChain;
1179 }
1180 interface ObjectChain<T> {
1181 /**
1182 * @see _.get
1183 */
1184 get<TKey extends keyof T>(path: TKey | [TKey]): ExpChain<T[TKey]>;
1185 /**
1186 * @see _.get
1187 */
1188 get<TKey extends keyof T>(path: TKey | [TKey], defaultValue: never[]): T[TKey] extends any[] ? ExpChain<Exclude<T[TKey], undefined>> : ExpChain<Exclude<T[TKey], undefined> | never[]>;
1189 /**
1190 * @see _.get
1191 */
1192 get<TKey extends keyof T, TDefault>(path: TKey | [TKey], defaultValue: TDefault): ExpChain<Exclude<T[TKey], undefined> | TDefault>;
1193 /**
1194 * @see _.get
1195 */
1196 get<TKey1 extends keyof T, TKey2 extends keyof T[TKey1]>(path: [TKey1, TKey2]): ExpChain<T[TKey1][TKey2]>;
1197 /**
1198 * @see _.get
1199 */
1200 get<TKey1 extends keyof T, TKey2 extends keyof T[TKey1]>(path: [TKey1, TKey2], defaultValue: never[]): T[TKey1][TKey2] extends any[] ? ExpChain<Exclude<T[TKey1][TKey2], undefined>> : ExpChain<Exclude<T[TKey1][TKey2], undefined> | never[]>;
1201 /**
1202 * @see _.get
1203 */
1204 get<TKey1 extends keyof T, TKey2 extends keyof T[TKey1], TDefault>(path: [TKey1, TKey2], defaultValue: TDefault): ExpChain<Exclude<T[TKey1][TKey2], undefined> | TDefault>;
1205 /**
1206 * @see _.get
1207 */
1208 get<TKey1 extends keyof T, TKey2 extends keyof T[TKey1], TKey3 extends keyof T[TKey1][TKey2]>(path: [TKey1, TKey2, TKey3]): ExpChain<T[TKey1][TKey2][TKey3]>;
1209 /**
1210 * @see _.get
1211 */
1212 get<TKey1 extends keyof T, TKey2 extends keyof T[TKey1], TKey3 extends keyof T[TKey1][TKey2]>(path: [TKey1, TKey2, TKey3], defaultValue: never[]): T[TKey1][TKey2][TKey3] extends any[] ? ExpChain<Exclude<T[TKey1][TKey2][TKey3], undefined>> : ExpChain<Exclude<T[TKey1][TKey2][TKey3], undefined> | never[]>;
1213 /**
1214 * @see _.get
1215 */
1216 get<TKey1 extends keyof T, TKey2 extends keyof T[TKey1], TKey3 extends keyof T[TKey1][TKey2], TDefault>(path: [TKey1, TKey2, TKey3], defaultValue: TDefault): ExpChain<Exclude<T[TKey1][TKey2][TKey3], undefined> | TDefault>;
1217 /**
1218 * @see _.get
1219 */
1220 get<TKey1 extends keyof T, TKey2 extends keyof T[TKey1], TKey3 extends keyof T[TKey1][TKey2], TKey4 extends keyof T[TKey1][TKey2][TKey3]>(path: [TKey1, TKey2, TKey3, TKey4]): ExpChain<T[TKey1][TKey2][TKey3][TKey4]>;
1221 /**
1222 * @see _.get
1223 */
1224 get<TKey1 extends keyof T, TKey2 extends keyof T[TKey1], TKey3 extends keyof T[TKey1][TKey2], TKey4 extends keyof T[TKey1][TKey2][TKey3]>(path: [TKey1, TKey2, TKey3, TKey4], defaultValue: never[]): T[TKey1][TKey2][TKey3][TKey4] extends any[] ? ExpChain<Exclude<T[TKey1][TKey2][TKey3][TKey4], undefined>> : ExpChain<Exclude<T[TKey1][TKey2][TKey3][TKey4], undefined> | never[]>;
1225 /**
1226 * @see _.get
1227 */
1228 get<TKey1 extends keyof T, TKey2 extends keyof T[TKey1], TKey3 extends keyof T[TKey1][TKey2], TKey4 extends keyof T[TKey1][TKey2][TKey3], TDefault>(path: [TKey1, TKey2, TKey3, TKey4], defaultValue: TDefault): ExpChain<Exclude<T[TKey1][TKey2][TKey3][TKey4], undefined> | TDefault>;
1229 /**
1230 * @see _.get
1231 */
1232 get(path: PropertyPath, defaultValue?: any): LoDashExplicitWrapper<any>;
1233 }
1234 interface CollectionChain<T> {
1235 /**
1236 * @see _.get
1237 */
1238 get(path: number): ExpChain<T>;
1239 /**
1240 * @see _.get
1241 */
1242 get<TDefault>(path: number, defaultValue: TDefault): ExpChain<T | TDefault>;
1243 }
1244 interface LoDashStatic {
1245 /**
1246 * Checks if `path` is a direct property of `object`.
1247 *
1248 * @category Object
1249 * @param object The object to query.
1250 * @param path The path to check.
1251 * @returns Returns `true` if `path` exists, else `false`.
1252 * @example
1253 *
1254 * var object = { 'a': { 'b': { 'c': 3 } } };
1255 * var other = _.create({ 'a': _.create({ 'b': _.create({ 'c': 3 }) }) });
1256 *
1257 * _.has(object, 'a');
1258 * // => true
1259 *
1260 * _.has(object, 'a.b.c');
1261 * // => true
1262 *
1263 * _.has(object, ['a', 'b', 'c']);
1264 * // => true
1265 *
1266 * _.has(other, 'a');
1267 * // => false
1268 */
1269 has<T>(object: T, path: PropertyPath): boolean;
1270 }
1271 interface LoDashImplicitWrapper<TValue> {
1272 /**
1273 * @see _.has
1274 */
1275 has(path: PropertyPath): boolean;
1276 }
1277 interface LoDashExplicitWrapper<TValue> {
1278 /**
1279 * @see _.has
1280 */
1281 has(path: PropertyPath): PrimitiveChain<boolean>;
1282 }
1283 interface LoDashStatic {
1284 /**
1285 * Checks if `path` is a direct or inherited property of `object`.
1286 *
1287 * @category Object
1288 * @param object The object to query.
1289 * @param path The path to check.
1290 * @returns Returns `true` if `path` exists, else `false`.
1291 * @example
1292 *
1293 * var object = _.create({ 'a': _.create({ 'b': _.create({ 'c': 3 }) }) });
1294 *
1295 * _.hasIn(object, 'a');
1296 * // => true
1297 *
1298 * _.hasIn(object, 'a.b.c');
1299 * // => true
1300 *
1301 * _.hasIn(object, ['a', 'b', 'c']);
1302 * // => true
1303 *
1304 * _.hasIn(object, 'b');
1305 * // => false
1306 */
1307 hasIn<T>(object: T, path: PropertyPath): boolean;
1308 }
1309 interface LoDashImplicitWrapper<TValue> {
1310 /**
1311 * @see _.hasIn
1312 */
1313 hasIn(path: PropertyPath): boolean;
1314 }
1315 interface LoDashExplicitWrapper<TValue> {
1316 /**
1317 * @see _.hasIn
1318 */
1319 hasIn(path: PropertyPath): PrimitiveChain<boolean>;
1320 }
1321 interface LoDashStatic {
1322 /**
1323 * Creates an object composed of the inverted keys and values of object. If object contains duplicate values,
1324 * subsequent values overwrite property assignments of previous values unless multiValue is true.
1325 *
1326 * @param object The object to invert.
1327 * @param multiValue Allow multiple values per key.
1328 * @return Returns the new inverted object.
1329 */
1330 invert(object: object): Dictionary<string>;
1331 }
1332 interface LoDashImplicitWrapper<TValue> {
1333 /**
1334 * @see _.invert
1335 */
1336 invert(): Object<Dictionary<string>>;
1337 }
1338 interface LoDashExplicitWrapper<TValue> {
1339 /**
1340 * @see _.invert
1341 */
1342 invert(): ObjectChain<Dictionary<string>>;
1343 }
1344 interface LoDashStatic {
1345 /**
1346 * This method is like _.invert except that the inverted object is generated from the results of running each
1347 * element of object through iteratee. The corresponding inverted value of each inverted key is an array of
1348 * keys responsible for generating the inverted value. The iteratee is invoked with one argument: (value).
1349 *
1350 * @param object The object to invert.
1351 * @param interatee The iteratee invoked per element.
1352 * @return Returns the new inverted object.
1353 */
1354 invertBy<T>(object: Dictionary<T> | NumericDictionary<T> | null | undefined, interatee?: ValueIteratee<T>): Dictionary<string[]>;
1355 /**
1356 * @see _.invertBy
1357 */
1358 invertBy<T extends object>(object: T | null | undefined, interatee?: ValueIteratee<T[keyof T]>): Dictionary<string[]>;
1359 }
1360 interface String {
1361 /**
1362 * @see _.invertBy
1363 */
1364 invertBy(iteratee?: ValueIteratee<string>): Object<Dictionary<string[]>>;
1365 }
1366 interface Collection<T> {
1367 /**
1368 * @see _.invertBy
1369 */
1370 invertBy(iteratee?: ValueIteratee<T>): Object<Dictionary<string[]>>;
1371 }
1372 interface Object<T> {
1373 /**
1374 * @see _.invertBy
1375 */
1376 invertBy(iteratee?: ValueIteratee<T[keyof T]>): Object<Dictionary<string[]>>;
1377 }
1378 interface StringChain {
1379 /**
1380 * @see _.invertBy
1381 */
1382 invertBy(iteratee?: ValueIteratee<string>): ObjectChain<Dictionary<string[]>>;
1383 }
1384 interface StringNullableChain {
1385 /**
1386 * @see _.invertBy
1387 */
1388 invertBy(iteratee?: ValueIteratee<string>): ObjectChain<Dictionary<string[]>>;
1389 }
1390 interface CollectionChain<T> {
1391 /**
1392 * @see _.invertBy
1393 */
1394 invertBy(iteratee?: ValueIteratee<T>): ObjectChain<Dictionary<string[]>>;
1395 }
1396 interface ObjectChain<T> {
1397 /**
1398 * @see _.invertBy
1399 */
1400 invertBy(iteratee?: ValueIteratee<T[keyof T]>): ObjectChain<Dictionary<string[]>>;
1401 }
1402 interface LoDashStatic {
1403 /**
1404 * Invokes the method at path of object.
1405 * @param object The object to query.
1406 * @param path The path of the method to invoke.
1407 * @param args The arguments to invoke the method with.
1408 */
1409 invoke(object: any, path: PropertyPath, ...args: any[]): any;
1410 }
1411 interface LoDashImplicitWrapper<TValue> {
1412 /**
1413 * @see _.invoke
1414 */
1415 invoke(path: PropertyPath, ...args: any[]): any;
1416 }
1417 interface LoDashExplicitWrapper<TValue> {
1418 /**
1419 * @see _.invoke
1420 */
1421 invoke(path: PropertyPath, ...args: any[]): LoDashExplicitWrapper<any>;
1422 }
1423 interface LoDashStatic {
1424 /**
1425 * Creates an array of the own enumerable property names of object.
1426 *
1427 * Note: Non-object values are coerced to objects. See the ES spec for more details.
1428 *
1429 * @param object The object to query.
1430 * @return Returns the array of property names.
1431 */
1432 keys(object?: any): string[];
1433 }
1434 interface LoDashImplicitWrapper<TValue> {
1435 /**
1436 * @see _.keys
1437 */
1438 keys(): Collection<string>;
1439 }
1440 interface LoDashExplicitWrapper<TValue> {
1441 /**
1442 * @see _.keys
1443 */
1444 keys(): CollectionChain<string>;
1445 }
1446 interface LoDashStatic {
1447 /**
1448 * Creates an array of the own and inherited enumerable property names of object.
1449 *
1450 * Note: Non-object values are coerced to objects.
1451 *
1452 * @param object The object to query.
1453 * @return An array of property names.
1454 */
1455 keysIn(object?: any): string[];
1456 }
1457 interface LoDashImplicitWrapper<TValue> {
1458 /**
1459 * @see _.keysIn
1460 */
1461 keysIn(): Collection<string>;
1462 }
1463 interface LoDashExplicitWrapper<TValue> {
1464 /**
1465 * @see _.keysIn
1466 */
1467 keysIn(): CollectionChain<string>;
1468 }
1469 interface LoDashStatic {
1470 /**
1471 * The opposite of _.mapValues; this method creates an object with the same values as object and keys generated
1472 * by running each own enumerable property of object through iteratee.
1473 *
1474 * @param object The object to iterate over.
1475 * @param iteratee The function invoked per iteration.
1476 * @return Returns the new mapped object.
1477 */
1478 mapKeys<T>(object: List<T> | null | undefined, iteratee?: ListIteratee<T>): Dictionary<T>;
1479 /**
1480 * @see _.mapKeys
1481 */
1482 mapKeys<T extends object>(object: T | null | undefined, iteratee?: ObjectIteratee<T>): Dictionary<T[keyof T]>;
1483 }
1484 interface Collection<T> {
1485 /**
1486 * @see _.mapKeys
1487 */
1488 mapKeys(iteratee?: ListIteratee<T>): Object<Dictionary<T>>;
1489 }
1490 interface Object<T> {
1491 /**
1492 * @see _.mapKeys
1493 */
1494 mapKeys(iteratee?: ObjectIteratee<T>): Object<Dictionary<T[keyof T]>>;
1495 }
1496 interface CollectionChain<T> {
1497 /**
1498 * @see _.mapKeys
1499 */
1500 mapKeys(iteratee?: ListIteratee<T>): ObjectChain<Dictionary<T>>;
1501 }
1502 interface ObjectChain<T> {
1503 /**
1504 * @see _.mapKeys
1505 */
1506 mapKeys(iteratee?: ObjectIteratee<T>): ObjectChain<Dictionary<T[keyof T]>>;
1507 }
1508 interface LoDashStatic {
1509 /**
1510 * Creates an object with the same keys as object and values generated by running each own
1511 * enumerable property of object through iteratee. The iteratee function is
1512 * invoked with three arguments: (value, key, object).
1513 *
1514 * @param object The object to iterate over.
1515 * @param iteratee The function invoked per iteration.
1516 * @return Returns the new mapped object.
1517 */
1518 mapValues<TResult>(obj: string | null | undefined, callback: StringIterator<TResult>): NumericDictionary<TResult>;
1519 /**
1520 * @see _.mapValues
1521 */
1522 mapValues<T extends object, TResult>(obj: T | null | undefined, callback: ObjectIterator<T, TResult>): { [P in keyof T]: TResult };
1523 /**
1524 * @see _.mapValues
1525 */
1526 mapValues<T>(obj: Dictionary<T> | NumericDictionary<T> | null | undefined, iteratee: object): Dictionary<boolean>;
1527 /**
1528 * @see _.mapValues
1529 */
1530 mapValues<T extends object>(obj: T | null | undefined, iteratee: object): { [P in keyof T]: boolean };
1531 /**
1532 * @see _.mapValues
1533 */
1534 mapValues<T, TKey extends keyof T>(obj: Dictionary<T> | NumericDictionary<T> | null | undefined, iteratee: TKey): Dictionary<T[TKey]>;
1535 /**
1536 * @see _.mapValues
1537 */
1538 mapValues<T>(obj: Dictionary<T> | NumericDictionary<T> | null | undefined, iteratee: string): Dictionary<any>;
1539 /**
1540 * @see _.mapValues
1541 */
1542 mapValues<T extends object>(obj: T | null | undefined, iteratee: string): { [P in keyof T]: any };
1543 /**
1544 * @see _.mapValues
1545 */
1546 mapValues(obj: string | null | undefined): NumericDictionary<string>;
1547 /**
1548 * @see _.mapValues
1549 */
1550 mapValues<T>(obj: Dictionary<T> | NumericDictionary<T> | null | undefined): Dictionary<T>;
1551 /**
1552 * @see _.mapValues
1553 */
1554 mapValues<T extends object>(obj: T): T;
1555 /**
1556 * @see _.mapValues
1557 */
1558 mapValues<T extends object>(obj: T | null | undefined): PartialObject<T>;
1559 }
1560 interface String {
1561 /**
1562 * @see _.mapValues
1563 */
1564 mapValues<TResult>(callback: StringIterator<TResult>): Object<NumericDictionary<TResult>>;
1565 /**
1566 * @see _.mapValues
1567 */
1568 mapValues(): Object<NumericDictionary<string>>;
1569 }
1570 interface Collection<T> {
1571 /**
1572 * @see _.mapValues
1573 */
1574 mapValues<TResult>(callback: DictionaryIterator<T, TResult>): Object<Dictionary<TResult>>;
1575 /**
1576 * @see _.mapValues
1577 */
1578 mapValues<TKey extends keyof T>(iteratee: TKey): Object<Dictionary<T[TKey]>>;
1579 /**
1580 * @see _.mapValues
1581 */
1582 mapValues(iteratee: object): Object<Dictionary<boolean>>;
1583 /**
1584 * @see _.mapValues
1585 */
1586 mapValues(iteratee: string): Object<Dictionary<any>>;
1587 /**
1588 * @see _.mapValues
1589 */
1590 mapValues(): Object<Dictionary<T>>;
1591 }
1592 interface Object<T> {
1593 /**
1594 * @see _.mapValues
1595 */
1596 mapValues<TResult>(callback: ObjectIterator<T, TResult>): Object<{ [P in keyof T]: TResult }>;
1597 /**
1598 * @see _.mapValues
1599 */
1600 mapValues<TResult>(callback: DictionaryIterator<T[keyof T], TResult>): Object<Dictionary<TResult>>;
1601 /**
1602 * @see _.mapValues
1603 */
1604 mapValues(iteratee: object): Object<{ [P in keyof T]: boolean }>;
1605 /**
1606 * @see _.mapValues
1607 */
1608 mapValues<TKey extends keyof T[keyof T]>(iteratee: TKey): Object<Dictionary<T[keyof T][TKey]>>;
1609 /**
1610 * @see _.mapValues
1611 */
1612 mapValues(iteratee: string): Object<{ [P in keyof T]: any }>;
1613 /**
1614 * @see _.mapValues
1615 */
1616 mapValues(): Object<T>;
1617 }
1618 interface StringChain {
1619 /**
1620 * @see _.mapValues
1621 */
1622 mapValues<TResult>(callback: StringIterator<TResult>): ObjectChain<NumericDictionary<TResult>>;
1623 /**
1624 * @see _.mapValues
1625 */
1626 mapValues(): ObjectChain<NumericDictionary<string>>;
1627 }
1628 interface StringNullableChain {
1629 /**
1630 * @see _.mapValues
1631 */
1632 mapValues<TResult>(callback: StringIterator<TResult>): ObjectChain<NumericDictionary<TResult>>;
1633 /**
1634 * @see _.mapValues
1635 */
1636 mapValues(): ObjectChain<NumericDictionary<string>>;
1637 }
1638 interface CollectionChain<T> {
1639 /**
1640 * @see _.mapValues
1641 */
1642 mapValues<TResult>(callback: DictionaryIterator<T, TResult>): ObjectChain<Dictionary<TResult>>;
1643 /**
1644 * @see _.mapValues
1645 */
1646 mapValues<TKey extends keyof T>(iteratee: TKey): ObjectChain<Dictionary<T[TKey]>>;
1647 /**
1648 * @see _.mapValues
1649 */
1650 mapValues(iteratee: object): ObjectChain<Dictionary<boolean>>;
1651 /**
1652 * @see _.mapValues
1653 */
1654 mapValues(iteratee: string): ObjectChain<Dictionary<any>>;
1655 /**
1656 * @see _.mapValues
1657 */
1658 mapValues(): ObjectChain<Dictionary<T>>;
1659 }
1660 interface ObjectChain<T> {
1661 /**
1662 * @see _.mapValues
1663 */
1664 mapValues<TResult>(callback: ObjectIterator<T, TResult>): ObjectChain<{ [P in keyof T]: TResult }>;
1665 /**
1666 * @see _.mapValues
1667 */
1668 mapValues<TResult>(callback: DictionaryIterator<T[keyof T], TResult>): ObjectChain<Dictionary<TResult>>;
1669 /**
1670 * @see _.mapValues
1671 */
1672 mapValues(iteratee: object): ObjectChain<{ [P in keyof T]: boolean }>;
1673 /**
1674 * @see _.mapValues
1675 */
1676 mapValues<TKey extends keyof T[keyof T]>(iteratee: TKey): ObjectChain<Dictionary<T[keyof T][TKey]>>;
1677 /**
1678 * @see _.mapValues
1679 */
1680 mapValues(iteratee: string): ObjectChain<{ [P in keyof T]: any }>;
1681 /**
1682 * @see _.mapValues
1683 */
1684 mapValues(): ObjectChain<T>;
1685 }
1686 interface LoDashStatic {
1687 /**
1688 * Recursively merges own and inherited enumerable properties of source
1689 * objects into the destination object, skipping source properties that resolve
1690 * to `undefined`. Array and plain object properties are merged recursively.
1691 * Other objects and value types are overridden by assignment. Source objects
1692 * are applied from left to right. Subsequent sources overwrite property
1693 * assignments of previous sources.
1694 *
1695 * **Note:** This method mutates `object`.
1696 *
1697 * @category Object
1698 * @param object The destination object.
1699 * @param [sources] The source objects.
1700 * @returns Returns `object`.
1701 * @example
1702 *
1703 * var users = {
1704 * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]
1705 * };
1706 *
1707 * var ages = {
1708 * 'data': [{ 'age': 36 }, { 'age': 40 }]
1709 * };
1710 *
1711 * _.merge(users, ages);
1712 * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }
1713 */
1714 merge<TObject, TSource>(object: TObject, source: TSource): TObject & TSource;
1715 /**
1716 * @see _.merge
1717 */
1718 merge<TObject, TSource1, TSource2>(object: TObject, source1: TSource1, source2: TSource2): TObject & TSource1 & TSource2;
1719 /**
1720 * @see _.merge
1721 */
1722 merge<TObject, TSource1, TSource2, TSource3>(object: TObject, source1: TSource1, source2: TSource2, source3: TSource3): TObject & TSource1 & TSource2 & TSource3;
1723 /**
1724 * @see _.merge
1725 */
1726 merge<TObject, TSource1, TSource2, TSource3, TSource4>(object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4): TObject & TSource1 & TSource2 & TSource3 & TSource4;
1727 /**
1728 * @see _.merge
1729 */
1730 merge(object: any, ...otherArgs: any[]): any;
1731 }
1732 interface Object<T> {
1733 /**
1734 * @see _.merge
1735 */
1736 merge<TSource>(source: TSource): Object<T & TSource>;
1737 /**
1738 * @see _.merge
1739 */
1740 merge<TSource1, TSource2>(source1: TSource1, source2: TSource2): Object<T & TSource1 & TSource2>;
1741 /**
1742 * @see _.merge
1743 */
1744 merge<TSource1, TSource2, TSource3>(source1: TSource1, source2: TSource2, source3: TSource3): Object<T & TSource1 & TSource2 & TSource3>;
1745 /**
1746 * @see _.merge
1747 */
1748 merge<TSource1, TSource2, TSource3, TSource4>(source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4): Object<T & TSource1 & TSource2 & TSource3 & TSource4>;
1749 /**
1750 * @see _.merge
1751 */
1752 merge(...otherArgs: any[]): Object<any>;
1753 }
1754 interface ObjectChain<T> {
1755 /**
1756 * @see _.merge
1757 */
1758 merge<TSource>(source: TSource): ObjectChain<T & TSource>;
1759 /**
1760 * @see _.merge
1761 */
1762 merge<TSource1, TSource2>(source1: TSource1, source2: TSource2): ObjectChain<T & TSource1 & TSource2>;
1763 /**
1764 * @see _.merge
1765 */
1766 merge<TSource1, TSource2, TSource3>(source1: TSource1, source2: TSource2, source3: TSource3): ObjectChain<T & TSource1 & TSource2 & TSource3>;
1767 /**
1768 * @see _.merge
1769 */
1770 merge<TSource1, TSource2, TSource3, TSource4>(source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4): ObjectChain<T & TSource1 & TSource2 & TSource3 & TSource4>;
1771 /**
1772 * @see _.merge
1773 */
1774 merge(...otherArgs: any[]): ObjectChain<any>;
1775 }
1776 type MergeWithCustomizer = { bivariantHack(value: any, srcValue: any, key: string, object: any, source: any): any; }["bivariantHack"];
1777 // TODO: Probably should just put all these methods on Object and forget about it.
1778 // oh, except for Collection<any> I GUESS
1779 interface LoDashStatic {
1780 /**
1781 * This method is like `_.merge` except that it accepts `customizer` which
1782 * is invoked to produce the merged values of the destination and source
1783 * properties. If `customizer` returns `undefined` merging is handled by the
1784 * method instead. The `customizer` is invoked with seven arguments:
1785 * (objValue, srcValue, key, object, source, stack).
1786 *
1787 * @category Object
1788 * @param object The destination object.
1789 * @param sources The source objects.
1790 * @param customizer The function to customize assigned values.
1791 * @returns Returns `object`.
1792 * @example
1793 *
1794 * function customizer(objValue, srcValue) {
1795 * if (_.isArray(objValue)) {
1796 * return objValue.concat(srcValue);
1797 * }
1798 * }
1799 *
1800 * var object = {
1801 * 'fruits': ['apple'],
1802 * 'vegetables': ['beet']
1803 * };
1804 *
1805 * var other = {
1806 * 'fruits': ['banana'],
1807 * 'vegetables': ['carrot']
1808 * };
1809 *
1810 * _.merge(object, other, customizer);
1811 * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }
1812 */
1813 mergeWith<TObject, TSource>(object: TObject, source: TSource, customizer: MergeWithCustomizer): TObject & TSource;
1814 /**
1815 * @see _.mergeWith
1816 */
1817 mergeWith<TObject, TSource1, TSource2>(object: TObject, source1: TSource1, source2: TSource2, customizer: MergeWithCustomizer): TObject & TSource1 & TSource2;
1818 /**
1819 * @see _.mergeWith
1820 */
1821 mergeWith<TObject, TSource1, TSource2, TSource3>(object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, customizer: MergeWithCustomizer): TObject & TSource1 & TSource2 & TSource3;
1822 /**
1823 * @see _.mergeWith
1824 */
1825 mergeWith<TObject, TSource1, TSource2, TSource3, TSource4>(object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4, customizer: MergeWithCustomizer): TObject & TSource1 & TSource2 & TSource3 & TSource4;
1826 /**
1827 * @see _.mergeWith
1828 */
1829 mergeWith(object: any, ...otherArgs: any[]): any;
1830 }
1831 interface Object<T> {
1832 /**
1833 * @see _.mergeWith
1834 */
1835 mergeWith<TSource>(source: TSource, customizer: MergeWithCustomizer): Object<T & TSource>;
1836 /**
1837 * @see _.mergeWith
1838 */
1839 mergeWith<TSource1, TSource2>(source1: TSource1, source2: TSource2, customizer: MergeWithCustomizer): Object<T & TSource1 & TSource2>;
1840 /**
1841 * @see _.mergeWith
1842 */
1843 mergeWith<TSource1, TSource2, TSource3>(source1: TSource1, source2: TSource2, source3: TSource3, customizer: MergeWithCustomizer): Object<T & TSource1 & TSource2 & TSource3>;
1844 /**
1845 * @see _.mergeWith
1846 */
1847 mergeWith<TSource1, TSource2, TSource3, TSource4>(source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4, customizer: MergeWithCustomizer): Object<T & TSource1 & TSource2 & TSource3 & TSource4>;
1848 /**
1849 * @see _.mergeWith
1850 */
1851 mergeWith(...otherArgs: any[]): Object<any>;
1852 }
1853 interface ObjectChain<T> {
1854 /**
1855 * @see _.mergeWith
1856 */
1857 mergeWith<TSource>(source: TSource, customizer: MergeWithCustomizer): ObjectChain<T & TSource>;
1858 /**
1859 * @see _.mergeWith
1860 */
1861 mergeWith<TSource1, TSource2>(source1: TSource1, source2: TSource2, customizer: MergeWithCustomizer): ObjectChain<T & TSource1 & TSource2>;
1862 /**
1863 * @see _.mergeWith
1864 */
1865 mergeWith<TSource1, TSource2, TSource3>(source1: TSource1, source2: TSource2, source3: TSource3, customizer: MergeWithCustomizer): ObjectChain<T & TSource1 & TSource2 & TSource3>;
1866 /**
1867 * @see _.mergeWith
1868 */
1869 mergeWith<TSource1, TSource2, TSource3, TSource4>(source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4, customizer: MergeWithCustomizer): ObjectChain<T & TSource1 & TSource2 & TSource3 & TSource4>;
1870 /**
1871 * @see _.mergeWith
1872 */
1873 mergeWith(...otherArgs: any[]): ObjectChain<any>;
1874 }
1875 interface LoDashStatic {
1876 /**
1877 * The opposite of `_.pick`; this method creates an object composed of the
1878 * own and inherited enumerable properties of `object` that are not omitted.
1879 *
1880 * @category Object
1881 * @param object The source object.
1882 * @param [paths] The property names to omit, specified
1883 * individually or in arrays..
1884 * @returns Returns the new object.
1885 * @example
1886 *
1887 * var object = { 'a': 1, 'b': '2', 'c': 3 };
1888 *
1889 * _.omit(object, ['a', 'c']);
1890 * // => { 'b': '2' }
1891 */
1892 omit<T extends object, K extends keyof T>(object: T | null | undefined, ...paths: Array<Many<K>>): Omit<T, K>;
1893 /**
1894 * @see _.omit
1895 */
1896 omit<T extends object>(object: T | null | undefined, ...paths: Array<Many<PropertyName>>): PartialObject<T>;
1897 }
1898 interface Collection<T> {
1899 /**
1900 * @see _.omit
1901 */
1902 omit(...paths: Array<Many<PropertyName>>): Collection<T>;
1903 }
1904 interface Object<T> {
1905 /**
1906 * @see _.omit
1907 */
1908 omit<K extends keyof T>(...paths: Array<Many<K>>): Object<Omit<T, K>>;
1909 /**
1910 * @see _.omit
1911 */
1912 omit(...paths: Array<Many<PropertyName | IterateeShorthand<T>>>): Object<PartialObject<T>>;
1913 }
1914 interface CollectionChain<T> {
1915 /**
1916 * @see _.omit
1917 */
1918 omit(...paths: Array<Many<PropertyName>>): CollectionChain<T>;
1919 }
1920 interface ObjectChain<T> {
1921 /**
1922 * @see _.omit
1923 */
1924 omit<K extends keyof T>(...paths: Array<Many<K>>): ObjectChain<Omit<T, K>>;
1925 /**
1926 * @see _.omit
1927 */
1928 omit(...paths: Array<Many<PropertyName>>): ObjectChain<PartialObject<T>>;
1929 }
1930 interface LoDashStatic {
1931 /**
1932 * The opposite of `_.pickBy`; this method creates an object composed of the
1933 * own and inherited enumerable properties of `object` that `predicate`
1934 * doesn't return truthy for.
1935 *
1936 * @category Object
1937 * @param object The source object.
1938 * @param [predicate=_.identity] The function invoked per property.
1939 * @returns Returns the new object.
1940 * @example
1941 *
1942 * var object = { 'a': 1, 'b': '2', 'c': 3 };
1943 *
1944 * _.omitBy(object, _.isNumber);
1945 * // => { 'b': '2' }
1946 */
1947 omitBy<T>(object: Dictionary<T> | null | undefined, predicate?: ValueKeyIteratee<T>): Dictionary<T>;
1948 /**
1949 * @see _.omitBy
1950 */
1951 omitBy<T>(object: NumericDictionary<T> | null | undefined, predicate?: ValueKeyIteratee<T>): NumericDictionary<T>;
1952 /**
1953 * @see _.omitBy
1954 */
1955 omitBy<T extends object>(object: T | null | undefined, predicate: ValueKeyIteratee<T[keyof T]>): PartialObject<T>;
1956 }
1957 interface Collection<T> {
1958 /**
1959 * @see _.omitBy
1960 */
1961 omitBy(predicate?: ValueKeyIteratee<T>): Object<Dictionary<T>>;
1962 }
1963 interface Object<T> {
1964 /**
1965 * @see _.omitBy
1966 */
1967 omitBy(predicate: ValueKeyIteratee<T[keyof T]>): Object<PartialObject<T>>;
1968 }
1969 interface CollectionChain<T> {
1970 /**
1971 * @see _.omitBy
1972 */
1973 omitBy(predicate?: ValueKeyIteratee<T>): ObjectChain<Dictionary<T>>;
1974 }
1975 interface ObjectChain<T> {
1976 /**
1977 * @see _.omitBy
1978 */
1979 omitBy(predicate: ValueKeyIteratee<T[keyof T]>): ObjectChain<PartialObject<T>>;
1980 }
1981 interface LoDashStatic {
1982 /**
1983 * Creates an object composed of the picked `object` properties.
1984 *
1985 * @category Object
1986 * @param object The source object.
1987 * @param [props] The property names to pick, specified
1988 * individually or in arrays.
1989 * @returns Returns the new object.
1990 * @example
1991 *
1992 * var object = { 'a': 1, 'b': '2', 'c': 3 };
1993 *
1994 * _.pick(object, ['a', 'c']);
1995 * // => { 'a': 1, 'c': 3 }
1996 */
1997 pick<T extends object, U extends keyof T>(object: T, ...props: Array<Many<U>>): Pick<T, U>;
1998 /**
1999 * @see _.pick
2000 */
2001 pick<T>(object: T | null | undefined, ...props: PropertyPath[]): PartialObject<T>;
2002 }
2003 interface Object<T> {
2004 /**
2005 * @see _.pick
2006 */
2007 pick<U extends keyof T>(...props: Array<Many<U>>): Object<Pick<T, U>>;
2008 /**
2009 * @see _.pick
2010 */
2011 pick(...props: PropertyPath[]): Object<PartialObject<T>>;
2012 }
2013 interface ObjectChain<T> {
2014 /**
2015 * @see _.pick
2016 */
2017 pick<U extends keyof T>(...props: Array<Many<U>>): ObjectChain<Pick<T, U>>;
2018 /**
2019 * @see _.pick
2020 */
2021 pick(...props: PropertyPath[]): ObjectChain<PartialObject<T>>;
2022 }
2023 interface LoDashStatic {
2024 /**
2025 * Creates an object composed of the `object` properties `predicate` returns
2026 * truthy for. The predicate is invoked with two arguments: (value, key).
2027 *
2028 * @category Object
2029 * @param object The source object.
2030 * @param [predicate=_.identity] The function invoked per property.
2031 * @returns Returns the new object.
2032 * @example
2033 *
2034 * var object = { 'a': 1, 'b': '2', 'c': 3 };
2035 *
2036 * _.pickBy(object, _.isNumber);
2037 * // => { 'a': 1, 'c': 3 }
2038 */
2039 pickBy<T, S extends T>(object: Dictionary<T> | null | undefined, predicate: ValueKeyIterateeTypeGuard<T, S>): Dictionary<S>;
2040 /**
2041 * @see _.pickBy
2042 */
2043 pickBy<T, S extends T>(object: NumericDictionary<T> | null | undefined, predicate: ValueKeyIterateeTypeGuard<T, S>): NumericDictionary<S>;
2044 /**
2045 * @see _.pickBy
2046 */
2047 pickBy<T>(object: Dictionary<T> | null | undefined, predicate?: ValueKeyIteratee<T>): Dictionary<T>;
2048 /**
2049 * @see _.pickBy
2050 */
2051 pickBy<T>(object: NumericDictionary<T> | null | undefined, predicate?: ValueKeyIteratee<T>): NumericDictionary<T>;
2052 /**
2053 * @see _.pickBy
2054 */
2055 pickBy<T extends object>(object: T | null | undefined, predicate?: ValueKeyIteratee<T[keyof T]>): PartialObject<T>;
2056 }
2057 interface Collection<T> {
2058 /**
2059 * @see _.pickBy
2060 */
2061 pickBy<S extends T>(predicate: ValueKeyIterateeTypeGuard<T, S>): Object<Dictionary<S>>;
2062 /**
2063 * @see _.pickBy
2064 */
2065 pickBy(predicate?: ValueKeyIteratee<T>): Object<Dictionary<T>>;
2066 }
2067 interface Object<T> {
2068 /**
2069 * @see _.pickBy
2070 */
2071 pickBy<S extends T[keyof T]>(predicate: ValueKeyIterateeTypeGuard<T[keyof T], S>): Object<NumericDictionary<unknown> extends T ? NumericDictionary<S> : Dictionary<S>>;
2072 /**
2073 * @see _.pickBy
2074 */
2075 pickBy(predicate?: ValueKeyIteratee<T[keyof T]>): Object<PartialObject<T>>;
2076 }
2077 interface CollectionChain<T> {
2078 /**
2079 * @see _.pickBy
2080 */
2081 pickBy<S extends T>(predicate: ValueKeyIterateeTypeGuard<T, S>): ObjectChain<Dictionary<S>>;
2082 /**
2083 * @see _.pickBy
2084 */
2085 pickBy(predicate?: ValueKeyIteratee<T>): ObjectChain<Dictionary<T>>;
2086 }
2087 interface ObjectChain<T> {
2088 /**
2089 * @see _.pickBy
2090 */
2091 pickBy<S extends T[keyof T]>(predicate: ValueKeyIterateeTypeGuard<T[keyof T], S>): ObjectChain<NumericDictionary<unknown> extends T ? NumericDictionary<S> : Dictionary<S>>;
2092 /**
2093 * @see _.pickBy
2094 */
2095 pickBy(predicate?: ValueKeyIteratee<T[keyof T]>): ObjectChain<PartialObject<T>>;
2096 }
2097 interface LoDashStatic {
2098 /**
2099 * This method is like _.get except that if the resolved value is a function it’s invoked with the this binding
2100 * of its parent object and its result is returned.
2101 *
2102 * @param object The object to query.
2103 * @param path The path of the property to resolve.
2104 * @param defaultValue The value returned if the resolved value is undefined.
2105 * @return Returns the resolved value.
2106 */
2107 result<TResult>(object: any, path: PropertyPath, defaultValue?: TResult | ((...args: any[]) => TResult)): TResult;
2108 }
2109 interface LoDashImplicitWrapper<TValue> {
2110 /**
2111 * @see _.result
2112 */
2113 result<TResult>(path: PropertyPath, defaultValue?: TResult | ((...args: any[]) => TResult)): TResult;
2114 }
2115 interface LoDashExplicitWrapper<TValue> {
2116 /**
2117 * @see _.result
2118 */
2119 result<TResult>(path: PropertyPath, defaultValue?: TResult | ((...args: any[]) => TResult)): ExpChain<TResult>;
2120 }
2121 interface LoDashStatic {
2122 /**
2123 * Sets the value at path of object. If a portion of path doesnt exist its created. Arrays are created for
2124 * missing index properties while objects are created for all other missing properties. Use _.setWith to
2125 * customize path creation.
2126 *
2127 * @param object The object to modify.
2128 * @param path The path of the property to set.
2129 * @param value The value to set.
2130 * @return Returns object.
2131 */
2132 set<T extends object>(object: T, path: PropertyPath, value: any): T;
2133 /**
2134 * @see _.set
2135 */
2136 set<TResult>(object: object, path: PropertyPath, value: any): TResult;
2137 }
2138 interface LoDashImplicitWrapper<TValue> {
2139 /**
2140 * @see _.set
2141 */
2142 set(path: PropertyPath, value: any): this;
2143 /**
2144 * @see _.set
2145 */
2146 set<TResult>(path: PropertyPath, value: any): ImpChain<TResult>;
2147 }
2148 interface LoDashExplicitWrapper<TValue> {
2149 /**
2150 * @see _.set
2151 */
2152 set(path: PropertyPath, value: any): this;
2153 /**
2154 * @see _.set
2155 */
2156 set<TResult>(path: PropertyPath, value: any): ExpChain<TResult>;
2157 }
2158 type SetWithCustomizer<T> = (nsValue: any, key: string, nsObject: T) => any;
2159 interface LoDashStatic {
2160 /**
2161 * This method is like _.set except that it accepts customizer which is invoked to produce the objects of
2162 * path. If customizer returns undefined path creation is handled by the method instead. The customizer is
2163 * invoked with three arguments: (nsValue, key, nsObject).
2164 *
2165 * @param object The object to modify.
2166 * @param path The path of the property to set.
2167 * @param value The value to set.
2168 * @param customizer The function to customize assigned values.
2169 * @return Returns object.
2170 */
2171 setWith<T extends object>(object: T, path: PropertyPath, value: any, customizer?: SetWithCustomizer<T>): T;
2172 /**
2173 * @see _.setWith
2174 */
2175 setWith<T extends object, TResult>(object: T, path: PropertyPath, value: any, customizer?: SetWithCustomizer<T>): TResult;
2176 }
2177 interface LoDashImplicitWrapper<TValue> {
2178 /**
2179 * @see _.setWith
2180 */
2181 setWith(path: PropertyPath, value: any, customizer?: SetWithCustomizer<TValue>): this;
2182 /**
2183 * @see _.setWith
2184 */
2185 setWith<TResult>(path: PropertyPath, value: any, customizer?: SetWithCustomizer<TValue>): ImpChain<TResult>;
2186 }
2187 interface LoDashExplicitWrapper<TValue> {
2188 /**
2189 * @see _.setWith
2190 */
2191 setWith(path: PropertyPath, value: any, customizer?: SetWithCustomizer<TValue>): this;
2192 /**
2193 * @see _.setWith
2194 */
2195 setWith<TResult>(path: PropertyPath, value: any, customizer?: SetWithCustomizer<TValue>): ExpChain<TResult>;
2196 }
2197 interface LoDashStatic {
2198 /**
2199 * Creates an array of own enumerable key-value pairs for object.
2200 *
2201 * @param object The object to query.
2202 * @return Returns the new array of key-value pairs.
2203 */
2204 toPairs<T>(object?: Dictionary<T> | NumericDictionary<T>): Array<[string, T]>;
2205 /**
2206 * @see _.toPairs
2207 */
2208 toPairs(object?: object): Array<[string, any]>;
2209 }
2210 interface LoDashImplicitWrapper<TValue> {
2211 /**
2212 * @see _.toPairs
2213 */
2214 toPairs(): Collection<[string, TValue extends Dictionary<infer U> ? U : TValue extends NumericDictionary<infer V> ? V : any]>;
2215 }
2216 interface LoDashExplicitWrapper<TValue> {
2217 /**
2218 * @see _.toPairs
2219 */
2220 toPairs(): CollectionChain<[string, TValue extends Dictionary<infer U> ? U : TValue extends NumericDictionary<infer V> ? V : any]>;
2221 }
2222 interface LoDashStatic {
2223 /**
2224 * Creates an array of own and inherited enumerable key-value pairs for object.
2225 *
2226 * @param object The object to query.
2227 * @return Returns the new array of key-value pairs.
2228 */
2229 toPairsIn<T>(object?: Dictionary<T> | NumericDictionary<T>): Array<[string, T]>;
2230 /**
2231 * @see _.toPairsIn
2232 */
2233 toPairsIn(object?: object): Array<[string, any]>;
2234 }
2235 interface LoDashImplicitWrapper<TValue> {
2236 /**
2237 * @see _.toPairsIn
2238 */
2239 toPairsIn(): Collection<[string, TValue extends Dictionary<infer U> ? U : TValue extends NumericDictionary<infer V> ? V : any]>;
2240 }
2241 interface LoDashExplicitWrapper<TValue> {
2242 /**
2243 * @see _.toPairsIn
2244 */
2245 toPairsIn(): CollectionChain<[string, TValue extends Dictionary<infer U> ? U : TValue extends NumericDictionary<infer V> ? V : any]>;
2246 }
2247 interface LoDashStatic {
2248 /**
2249 * An alternative to _.reduce; this method transforms object to a new accumulator object which is the result of
2250 * running each of its own enumerable properties through iteratee, with each invocation potentially mutating
2251 * the accumulator object. The iteratee is invoked with four arguments: (accumulator,
2252 * value, key, object). Iteratee functions may exit iteration early by explicitly returning false.
2253 *
2254 * @param object The object to iterate over.
2255 * @param iteratee The function invoked per iteration.
2256 * @param accumulator The custom accumulator value.
2257 * @return Returns the accumulated value.
2258 */
2259 transform<T, TResult>(object: T[], iteratee: MemoVoidArrayIterator<T, TResult>, accumulator?: TResult): TResult;
2260 /**
2261 * @see _.transform
2262 */
2263 transform<T, TResult>(object: Dictionary<T>, iteratee: MemoVoidDictionaryIterator<T, TResult>, accumulator?: TResult): TResult;
2264 /**
2265 * @see _.transform
2266 */
2267 transform(object: any[]): any[];
2268 /**
2269 * @see _.transform
2270 */
2271 transform(object: object): Dictionary<any>;
2272 }
2273 interface Collection<T> {
2274 /**
2275 * @see _.transform
2276 */
2277 transform<TResult>(iteratee: MemoVoidArrayIterator<T, TResult>, accumulator?: TResult): ImpChain<TResult>;
2278 /**
2279 * @see _.transform
2280 */
2281 transform(): Collection<any>;
2282 }
2283 interface Object<T> {
2284 /**
2285 * @see _.transform
2286 */
2287 transform<TResult>(iteratee: MemoVoidDictionaryIterator<T[keyof T], TResult>, accumulator?: TResult): ImpChain<TResult>;
2288 /**
2289 * @see _.transform
2290 */
2291 transform(): ImpChain<T extends Dictionary<unknown> ? Dictionary<any> : T>;
2292 }
2293 interface CollectionChain<T> {
2294 /**
2295 * @see _.transform
2296 */
2297 transform<TResult>(iteratee: MemoVoidArrayIterator<T, TResult>, accumulator?: TResult): ExpChain<TResult>;
2298 /**
2299 * @see _.transform
2300 */
2301 transform(): CollectionChain<any>;
2302 }
2303 interface ObjectChain<T> {
2304 /**
2305 * @see _.transform
2306 */
2307 transform<TResult>(iteratee: MemoVoidDictionaryIterator<T[keyof T], TResult>, accumulator?: TResult): ExpChain<TResult>;
2308 /**
2309 * @see _.transform
2310 */
2311 transform(): ExpChain<T extends Dictionary<unknown> ? Dictionary<any> : T>;
2312 }
2313 interface LoDashStatic {
2314 /**
2315 * Removes the property at path of object.
2316 *
2317 * Note: This method mutates object.
2318 *
2319 * @param object The object to modify.
2320 * @param path The path of the property to unset.
2321 * @return Returns true if the property is deleted, else false.
2322 */
2323 unset(object: any, path: PropertyPath): boolean;
2324 }
2325 interface LoDashImplicitWrapper<TValue> {
2326 /**
2327 * @see _.unset
2328 */
2329 unset(path: PropertyPath): Primitive<boolean>;
2330 }
2331 interface LoDashExplicitWrapper<TValue> {
2332 /**
2333 * @see _.unset
2334 */
2335 unset(path: PropertyPath): PrimitiveChain<boolean>;
2336 }
2337 interface LoDashStatic {
2338 /**
2339 * This method is like _.set except that accepts updater to produce the value to set. Use _.updateWith to
2340 * customize path creation. The updater is invoked with one argument: (value).
2341 *
2342 * @param object The object to modify.
2343 * @param path The path of the property to set.
2344 * @param updater The function to produce the updated value.
2345 * @return Returns object.
2346 */
2347 update(object: object, path: PropertyPath, updater: (value: any) => any): any;
2348 }
2349 interface LoDashImplicitWrapper<TValue> {
2350 /**
2351 * @see _.update
2352 */
2353 update(path: PropertyPath, updater: (value: any) => any): Object<any>;
2354 }
2355 interface LoDashExplicitWrapper<TValue> {
2356 /**
2357 * @see _.update
2358 */
2359 update(path: PropertyPath, updater: (value: any) => any): ObjectChain<any>;
2360 }
2361 interface LoDashStatic {
2362 /**
2363 * This method is like `_.update` except that it accepts `customizer` which is
2364 * invoked to produce the objects of `path`. If `customizer` returns `undefined`
2365 * path creation is handled by the method instead. The `customizer` is invoked
2366 * with three arguments: (nsValue, key, nsObject).
2367 *
2368 * **Note:** This method mutates `object`.
2369 *
2370 * @since 4.6.0
2371 * @category Object
2372 * @param object The object to modify.
2373 * @param path The path of the property to set.
2374 * @param updater The function to produce the updated value.
2375 * @param [customizer] The function to customize assigned values.
2376 * @returns Returns `object`.
2377 * @example
2378 *
2379 * var object = {};
2380 *
2381 * _.updateWith(object, '[0][1]', _.constant('a'), Object);
2382 * // => { '0': { '1': 'a' } }
2383 */
2384 updateWith<T extends object>(object: T, path: PropertyPath, updater: (oldValue: any) => any, customizer?: SetWithCustomizer<T>): T;
2385 /**
2386 * @see _.updateWith
2387 */
2388 updateWith<T extends object, TResult>(object: T, path: PropertyPath, updater: (oldValue: any) => any, customizer?: SetWithCustomizer<T>): TResult;
2389 }
2390 interface Object<T> {
2391 /**
2392 * @see _.updateWith
2393 */
2394 updateWith(path: PropertyPath, updater: (oldValue: any) => any, customizer?: SetWithCustomizer<T>): this;
2395 /**
2396 * @see _.updateWith
2397 */
2398 updateWith<TResult>(path: PropertyPath, updater: (oldValue: any) => any, customizer?: SetWithCustomizer<T>): Object<TResult>;
2399 }
2400 interface ObjectChain<T> {
2401 /**
2402 * @see _.updateWith
2403 */
2404 updateWith(path: PropertyPath, updater: (oldValue: any) => any, customizer?: SetWithCustomizer<T>): this;
2405 /**
2406 * @see _.updateWith
2407 */
2408 updateWith<TResult>(path: PropertyPath, updater: (oldValue: any) => any, customizer?: SetWithCustomizer<T>): ObjectChain<TResult>;
2409 }
2410 interface LoDashStatic {
2411 /**
2412 * Creates an array of the own enumerable property values of object.
2413 *
2414 * @param object The object to query.
2415 * @return Returns an array of property values.
2416 */
2417 values<T>(object: Dictionary<T> | NumericDictionary<T> | List<T> | null | undefined): T[];
2418 /**
2419 * @see _.values
2420 */
2421 values<T extends object>(object: T | null | undefined): Array<T[keyof T]>;
2422 /**
2423 * @see _.values
2424 */
2425 values(object: any): any[];
2426 }
2427 interface String {
2428 /**
2429 * @see _.values
2430 */
2431 values(): Collection<string>;
2432 }
2433 interface Object<T> {
2434 /**
2435 * @see _.values
2436 */
2437 values(): Collection<T[keyof T]>;
2438 }
2439 interface ObjectChain<T> {
2440 /**
2441 * @see _.values
2442 */
2443 values(): CollectionChain<T[keyof T]>;
2444 }
2445 interface StringChain {
2446 /**
2447 * @see _.values
2448 */
2449 values(): CollectionChain<string>;
2450 }
2451 interface StringNullableChain {
2452 /**
2453 * @see _.values
2454 */
2455 values(): CollectionChain<string>;
2456 }
2457 interface LoDashStatic {
2458 /**
2459 * Creates an array of the own and inherited enumerable property values of object.
2460 *
2461 * @param object The object to query.
2462 * @return Returns the array of property values.
2463 */
2464 valuesIn<T>(object: Dictionary<T> | NumericDictionary<T> | List<T> | null | undefined): T[];
2465 /**
2466 * @see _.valuesIn
2467 */
2468 valuesIn<T extends object>(object: T | null | undefined): Array<T[keyof T]>;
2469 }
2470 interface String {
2471 /**
2472 * @see _.valuesIn
2473 */
2474 valuesIn(): Collection<string>;
2475 }
2476 interface Object<T> {
2477 /**
2478 * @see _.valuesIn
2479 */
2480 valuesIn(): Collection<T[keyof T]>;
2481 }
2482 interface StringChain {
2483 /**
2484 * @see _.valuesIn
2485 */
2486 valuesIn(): CollectionChain<string>;
2487 }
2488 interface StringNullableChain {
2489 /**
2490 * @see _.valuesIn
2491 */
2492 valuesIn(): CollectionChain<string>;
2493 }
2494 interface ObjectChain<T> {
2495 /**
2496 * @see _.valuesIn
2497 */
2498 valuesIn(): CollectionChain<T[keyof T]>;
2499 }
2500}
2501
\No newline at end of file