UNPKG

95.3 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): NonNullable<TSource & TObject>;
483 /**
484 * @see _.defaults
485 */
486 defaults<TObject, TSource1, TSource2>(object: TObject, source1: TSource1, source2: TSource2): NonNullable<TSource2 & TSource1 & TObject>;
487 /**
488 * @see _.defaults
489 */
490 defaults<TObject, TSource1, TSource2, TSource3>(object: TObject, source1: TSource1, source2: TSource2, source3: TSource3): NonNullable<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): NonNullable<TSource4 & TSource3 & TSource2 & TSource1 & TObject>;
495 /**
496 * @see _.defaults
497 */
498 defaults<TObject>(object: TObject): NonNullable<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<NonNullable<TSource & T>>;
509 /**
510 * @see _.defaults
511 */
512 defaults<TSource1, TSource2>(source1: TSource1, source2: TSource2): Object<NonNullable<TSource2 & TSource1 & T>>;
513 /**
514 * @see _.defaults
515 */
516 defaults<TSource1, TSource2, TSource3>(source1: TSource1, source2: TSource2, source3: TSource3): Object<NonNullable<TSource3 & TSource2 & TSource1 & T>>;
517 /**
518 * @see _.defaults
519 */
520 defaults<TSource1, TSource2, TSource3, TSource4>(source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4): Object<NonNullable<TSource4 & TSource3 & TSource2 & TSource1 & T>>;
521 /**
522 * @see _.defaults
523 */
524 defaults(): Object<NonNullable<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<NonNullable<TSource & T>>;
535 /**
536 * @see _.defaults
537 */
538 defaults<TSource1, TSource2>(source1: TSource1, source2: TSource2): ObjectChain<NonNullable<TSource2 & TSource1 & T>>;
539 /**
540 * @see _.defaults
541 */
542 defaults<TSource1, TSource2, TSource3>(source1: TSource1, source2: TSource2, source3: TSource3): ObjectChain<NonNullable<TSource3 & TSource2 & TSource1 & T>>;
543 /**
544 * @see _.defaults
545 */
546 defaults<TSource1, TSource2, TSource3, TSource4>(source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4): ObjectChain<NonNullable<TSource4 & TSource3 & TSource2 & TSource1 & T>>;
547 /**
548 * @see _.defaults
549 */
550 defaults(): ObjectChain<NonNullable<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 * _.mergeWith(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 PropertyName[]>(
1893 object: T | null | undefined,
1894 ...paths: K
1895 ): Pick<T, Exclude<keyof T, K[number]>>;
1896 /**
1897 * @see _.omit
1898 */
1899 omit<T extends object, K extends keyof T>(object: T | null | undefined, ...paths: Array<Many<K>>): Omit<T, K>;
1900 /**
1901 * @see _.omit
1902 */
1903 omit<T extends object>(object: T | null | undefined, ...paths: Array<Many<PropertyName>>): PartialObject<T>;
1904 }
1905 interface Collection<T> {
1906 /**
1907 * @see _.omit
1908 */
1909 omit(...paths: Array<Many<PropertyName>>): Collection<T>;
1910 }
1911 interface Object<T> {
1912 /**
1913 * @see _.omit
1914 */
1915 omit<K extends keyof T>(...paths: Array<Many<K>>): Object<Omit<T, K>>;
1916 /**
1917 * @see _.omit
1918 */
1919 omit(...paths: Array<Many<PropertyName | IterateeShorthand<T>>>): Object<PartialObject<T>>;
1920 }
1921 interface CollectionChain<T> {
1922 /**
1923 * @see _.omit
1924 */
1925 omit(...paths: Array<Many<PropertyName>>): CollectionChain<T>;
1926 }
1927 interface ObjectChain<T> {
1928 /**
1929 * @see _.omit
1930 */
1931 omit<K extends keyof T>(...paths: Array<Many<K>>): ObjectChain<Omit<T, K>>;
1932 /**
1933 * @see _.omit
1934 */
1935 omit(...paths: Array<Many<PropertyName>>): ObjectChain<PartialObject<T>>;
1936 }
1937 interface LoDashStatic {
1938 /**
1939 * The opposite of `_.pickBy`; this method creates an object composed of the
1940 * own and inherited enumerable properties of `object` that `predicate`
1941 * doesn't return truthy for.
1942 *
1943 * @category Object
1944 * @param object The source object.
1945 * @param [predicate=_.identity] The function invoked per property.
1946 * @returns Returns the new object.
1947 * @example
1948 *
1949 * var object = { 'a': 1, 'b': '2', 'c': 3 };
1950 *
1951 * _.omitBy(object, _.isNumber);
1952 * // => { 'b': '2' }
1953 */
1954 omitBy<T>(object: Dictionary<T> | null | undefined, predicate?: ValueKeyIteratee<T>): Dictionary<T>;
1955 /**
1956 * @see _.omitBy
1957 */
1958 omitBy<T>(object: NumericDictionary<T> | null | undefined, predicate?: ValueKeyIteratee<T>): NumericDictionary<T>;
1959 /**
1960 * @see _.omitBy
1961 */
1962 omitBy<T extends object>(object: T | null | undefined, predicate: ValueKeyIteratee<T[keyof T]>): PartialObject<T>;
1963 }
1964 interface Collection<T> {
1965 /**
1966 * @see _.omitBy
1967 */
1968 omitBy(predicate?: ValueKeyIteratee<T>): Object<Dictionary<T>>;
1969 }
1970 interface Object<T> {
1971 /**
1972 * @see _.omitBy
1973 */
1974 omitBy(predicate: ValueKeyIteratee<T[keyof T]>): Object<PartialObject<T>>;
1975 }
1976 interface CollectionChain<T> {
1977 /**
1978 * @see _.omitBy
1979 */
1980 omitBy(predicate?: ValueKeyIteratee<T>): ObjectChain<Dictionary<T>>;
1981 }
1982 interface ObjectChain<T> {
1983 /**
1984 * @see _.omitBy
1985 */
1986 omitBy(predicate: ValueKeyIteratee<T[keyof T]>): ObjectChain<PartialObject<T>>;
1987 }
1988 interface LoDashStatic {
1989 /**
1990 * Creates an object composed of the picked `object` properties.
1991 *
1992 * @category Object
1993 * @param object The source object.
1994 * @param [props] The property names to pick, specified
1995 * individually or in arrays.
1996 * @returns Returns the new object.
1997 * @example
1998 *
1999 * var object = { 'a': 1, 'b': '2', 'c': 3 };
2000 *
2001 * _.pick(object, ['a', 'c']);
2002 * // => { 'a': 1, 'c': 3 }
2003 */
2004 pick<T extends object, U extends keyof T>(object: T, ...props: Array<Many<U>>): Pick<T, U>;
2005 /**
2006 * @see _.pick
2007 */
2008 pick<T>(object: T | null | undefined, ...props: PropertyPath[]): PartialObject<T>;
2009 }
2010 interface Object<T> {
2011 /**
2012 * @see _.pick
2013 */
2014 pick<U extends keyof T>(...props: Array<Many<U>>): Object<Pick<T, U>>;
2015 /**
2016 * @see _.pick
2017 */
2018 pick(...props: PropertyPath[]): Object<PartialObject<T>>;
2019 }
2020 interface ObjectChain<T> {
2021 /**
2022 * @see _.pick
2023 */
2024 pick<U extends keyof T>(...props: Array<Many<U>>): ObjectChain<Pick<T, U>>;
2025 /**
2026 * @see _.pick
2027 */
2028 pick(...props: PropertyPath[]): ObjectChain<PartialObject<T>>;
2029 }
2030 interface LoDashStatic {
2031 /**
2032 * Creates an object composed of the `object` properties `predicate` returns
2033 * truthy for. The predicate is invoked with two arguments: (value, key).
2034 *
2035 * @category Object
2036 * @param object The source object.
2037 * @param [predicate=_.identity] The function invoked per property.
2038 * @returns Returns the new object.
2039 * @example
2040 *
2041 * var object = { 'a': 1, 'b': '2', 'c': 3 };
2042 *
2043 * _.pickBy(object, _.isNumber);
2044 * // => { 'a': 1, 'c': 3 }
2045 */
2046 pickBy<T, S extends T>(object: Dictionary<T> | null | undefined, predicate: ValueKeyIterateeTypeGuard<T, S>): Dictionary<S>;
2047 /**
2048 * @see _.pickBy
2049 */
2050 pickBy<T, S extends T>(object: NumericDictionary<T> | null | undefined, predicate: ValueKeyIterateeTypeGuard<T, S>): NumericDictionary<S>;
2051 /**
2052 * @see _.pickBy
2053 */
2054 pickBy<T>(object: Dictionary<T> | null | undefined, predicate?: ValueKeyIteratee<T>): Dictionary<T>;
2055 /**
2056 * @see _.pickBy
2057 */
2058 pickBy<T>(object: NumericDictionary<T> | null | undefined, predicate?: ValueKeyIteratee<T>): NumericDictionary<T>;
2059 /**
2060 * @see _.pickBy
2061 */
2062 pickBy<T extends object>(object: T | null | undefined, predicate?: ValueKeyIteratee<T[keyof T]>): PartialObject<T>;
2063 }
2064 interface Collection<T> {
2065 /**
2066 * @see _.pickBy
2067 */
2068 pickBy<S extends T>(predicate: ValueKeyIterateeTypeGuard<T, S>): Object<Dictionary<S>>;
2069 /**
2070 * @see _.pickBy
2071 */
2072 pickBy(predicate?: ValueKeyIteratee<T>): Object<Dictionary<T>>;
2073 }
2074 interface Object<T> {
2075 /**
2076 * @see _.pickBy
2077 */
2078 pickBy<S extends T[keyof T]>(predicate: ValueKeyIterateeTypeGuard<T[keyof T], S>): Object<NumericDictionary<unknown> extends T ? NumericDictionary<S> : Dictionary<S>>;
2079 /**
2080 * @see _.pickBy
2081 */
2082 pickBy(predicate?: ValueKeyIteratee<T[keyof T]>): Object<PartialObject<T>>;
2083 }
2084 interface CollectionChain<T> {
2085 /**
2086 * @see _.pickBy
2087 */
2088 pickBy<S extends T>(predicate: ValueKeyIterateeTypeGuard<T, S>): ObjectChain<Dictionary<S>>;
2089 /**
2090 * @see _.pickBy
2091 */
2092 pickBy(predicate?: ValueKeyIteratee<T>): ObjectChain<Dictionary<T>>;
2093 }
2094 interface ObjectChain<T> {
2095 /**
2096 * @see _.pickBy
2097 */
2098 pickBy<S extends T[keyof T]>(predicate: ValueKeyIterateeTypeGuard<T[keyof T], S>): ObjectChain<NumericDictionary<unknown> extends T ? NumericDictionary<S> : Dictionary<S>>;
2099 /**
2100 * @see _.pickBy
2101 */
2102 pickBy(predicate?: ValueKeyIteratee<T[keyof T]>): ObjectChain<PartialObject<T>>;
2103 }
2104 interface LoDashStatic {
2105 /**
2106 * This method is like _.get except that if the resolved value is a function it’s invoked with the this binding
2107 * of its parent object and its result is returned.
2108 *
2109 * @param object The object to query.
2110 * @param path The path of the property to resolve.
2111 * @param defaultValue The value returned if the resolved value is undefined.
2112 * @return Returns the resolved value.
2113 */
2114 result<TResult>(object: any, path: PropertyPath, defaultValue?: TResult | ((...args: any[]) => TResult)): TResult;
2115 }
2116 interface LoDashImplicitWrapper<TValue> {
2117 /**
2118 * @see _.result
2119 */
2120 result<TResult>(path: PropertyPath, defaultValue?: TResult | ((...args: any[]) => TResult)): TResult;
2121 }
2122 interface LoDashExplicitWrapper<TValue> {
2123 /**
2124 * @see _.result
2125 */
2126 result<TResult>(path: PropertyPath, defaultValue?: TResult | ((...args: any[]) => TResult)): ExpChain<TResult>;
2127 }
2128 interface LoDashStatic {
2129 /**
2130 * Sets the value at path of object. If a portion of path doesnt exist its created. Arrays are created for
2131 * missing index properties while objects are created for all other missing properties. Use _.setWith to
2132 * customize path creation.
2133 *
2134 * @param object The object to modify.
2135 * @param path The path of the property to set.
2136 * @param value The value to set.
2137 * @return Returns object.
2138 */
2139 set<T extends object>(object: T, path: PropertyPath, value: any): T;
2140 /**
2141 * @see _.set
2142 */
2143 set<TResult>(object: object, path: PropertyPath, value: any): TResult;
2144 }
2145 interface LoDashImplicitWrapper<TValue> {
2146 /**
2147 * @see _.set
2148 */
2149 set(path: PropertyPath, value: any): this;
2150 /**
2151 * @see _.set
2152 */
2153 set<TResult>(path: PropertyPath, value: any): ImpChain<TResult>;
2154 }
2155 interface LoDashExplicitWrapper<TValue> {
2156 /**
2157 * @see _.set
2158 */
2159 set(path: PropertyPath, value: any): this;
2160 /**
2161 * @see _.set
2162 */
2163 set<TResult>(path: PropertyPath, value: any): ExpChain<TResult>;
2164 }
2165 type SetWithCustomizer<T> = (nsValue: any, key: string, nsObject: T) => any;
2166 interface LoDashStatic {
2167 /**
2168 * This method is like _.set except that it accepts customizer which is invoked to produce the objects of
2169 * path. If customizer returns undefined path creation is handled by the method instead. The customizer is
2170 * invoked with three arguments: (nsValue, key, nsObject).
2171 *
2172 * @param object The object to modify.
2173 * @param path The path of the property to set.
2174 * @param value The value to set.
2175 * @param customizer The function to customize assigned values.
2176 * @return Returns object.
2177 */
2178 setWith<T extends object>(object: T, path: PropertyPath, value: any, customizer?: SetWithCustomizer<T>): T;
2179 /**
2180 * @see _.setWith
2181 */
2182 setWith<T extends object, TResult>(object: T, path: PropertyPath, value: any, customizer?: SetWithCustomizer<T>): TResult;
2183 }
2184 interface LoDashImplicitWrapper<TValue> {
2185 /**
2186 * @see _.setWith
2187 */
2188 setWith(path: PropertyPath, value: any, customizer?: SetWithCustomizer<TValue>): this;
2189 /**
2190 * @see _.setWith
2191 */
2192 setWith<TResult>(path: PropertyPath, value: any, customizer?: SetWithCustomizer<TValue>): ImpChain<TResult>;
2193 }
2194 interface LoDashExplicitWrapper<TValue> {
2195 /**
2196 * @see _.setWith
2197 */
2198 setWith(path: PropertyPath, value: any, customizer?: SetWithCustomizer<TValue>): this;
2199 /**
2200 * @see _.setWith
2201 */
2202 setWith<TResult>(path: PropertyPath, value: any, customizer?: SetWithCustomizer<TValue>): ExpChain<TResult>;
2203 }
2204 interface LoDashStatic {
2205 /**
2206 * Creates an array of own enumerable key-value pairs for object.
2207 *
2208 * @param object The object to query.
2209 * @return Returns the new array of key-value pairs.
2210 */
2211 toPairs<T>(object?: Dictionary<T> | NumericDictionary<T>): Array<[string, T]>;
2212 /**
2213 * @see _.toPairs
2214 */
2215 toPairs(object?: object): Array<[string, any]>;
2216 }
2217 interface LoDashImplicitWrapper<TValue> {
2218 /**
2219 * @see _.toPairs
2220 */
2221 toPairs(): Collection<[string, TValue extends Dictionary<infer U> ? U : TValue extends NumericDictionary<infer V> ? V : any]>;
2222 }
2223 interface LoDashExplicitWrapper<TValue> {
2224 /**
2225 * @see _.toPairs
2226 */
2227 toPairs(): CollectionChain<[string, TValue extends Dictionary<infer U> ? U : TValue extends NumericDictionary<infer V> ? V : any]>;
2228 }
2229 interface LoDashStatic {
2230 /**
2231 * Creates an array of own and inherited enumerable key-value pairs for object.
2232 *
2233 * @param object The object to query.
2234 * @return Returns the new array of key-value pairs.
2235 */
2236 toPairsIn<T>(object?: Dictionary<T> | NumericDictionary<T>): Array<[string, T]>;
2237 /**
2238 * @see _.toPairsIn
2239 */
2240 toPairsIn(object?: object): Array<[string, any]>;
2241 }
2242 interface LoDashImplicitWrapper<TValue> {
2243 /**
2244 * @see _.toPairsIn
2245 */
2246 toPairsIn(): Collection<[string, TValue extends Dictionary<infer U> ? U : TValue extends NumericDictionary<infer V> ? V : any]>;
2247 }
2248 interface LoDashExplicitWrapper<TValue> {
2249 /**
2250 * @see _.toPairsIn
2251 */
2252 toPairsIn(): CollectionChain<[string, TValue extends Dictionary<infer U> ? U : TValue extends NumericDictionary<infer V> ? V : any]>;
2253 }
2254 interface LoDashStatic {
2255 /**
2256 * An alternative to _.reduce; this method transforms object to a new accumulator object which is the result of
2257 * running each of its own enumerable properties through iteratee, with each invocation potentially mutating
2258 * the accumulator object. The iteratee is invoked with four arguments: (accumulator,
2259 * value, key, object). Iteratee functions may exit iteration early by explicitly returning false.
2260 *
2261 * @param object The object to iterate over.
2262 * @param iteratee The function invoked per iteration.
2263 * @param accumulator The custom accumulator value.
2264 * @return Returns the accumulated value.
2265 */
2266 transform<T, TResult>(object: ReadonlyArray<T>, iteratee: MemoVoidArrayIterator<T, TResult>, accumulator?: TResult): TResult;
2267 /**
2268 * @see _.transform
2269 */
2270 transform<T, TResult>(object: Dictionary<T>, iteratee: MemoVoidDictionaryIterator<T, string, TResult>, accumulator?: TResult): TResult;
2271 /**
2272 * @see _.transform
2273 */
2274 transform<T extends object, TResult>(object: T, iteratee: MemoVoidDictionaryIterator<T[keyof T], keyof T, TResult>, accumulator?: TResult): TResult;
2275 /**
2276 * @see _.transform
2277 */
2278 transform(object: any[]): any[];
2279 /**
2280 * @see _.transform
2281 */
2282 transform(object: object): Dictionary<any>;
2283 }
2284 interface Collection<T> {
2285 /**
2286 * @see _.transform
2287 */
2288 transform<TResult>(iteratee: MemoVoidArrayIterator<T, TResult>, accumulator?: TResult): ImpChain<TResult>;
2289 /**
2290 * @see _.transform
2291 */
2292 transform(): Collection<any>;
2293 }
2294 interface Object<T> {
2295 /**
2296 * @see _.transform
2297 */
2298 transform<TResult>(iteratee: MemoVoidDictionaryIterator<T[keyof T], string, TResult>, accumulator?: TResult): ImpChain<TResult>;
2299 /**
2300 * @see _.transform
2301 */
2302 transform<TResult>(iteratee: MemoVoidDictionaryIterator<T[keyof T], keyof T, TResult>, accumulator?: TResult): ImpChain<TResult>;
2303 /**
2304 * @see _.transform
2305 */
2306 transform(): ImpChain<T extends Dictionary<unknown> ? Dictionary<any> : T>;
2307 }
2308 interface CollectionChain<T> {
2309 /**
2310 * @see _.transform
2311 */
2312 transform<TResult>(iteratee: MemoVoidArrayIterator<T, TResult>, accumulator?: TResult): ExpChain<TResult>;
2313 /**
2314 * @see _.transform
2315 */
2316 transform(): CollectionChain<any>;
2317 }
2318 interface ObjectChain<T> {
2319 /**
2320 * @see _.transform
2321 */
2322 transform<TResult>(iteratee: MemoVoidDictionaryIterator<T[keyof T], string, TResult>, accumulator?: TResult): ExpChain<TResult>;
2323 /**
2324 * @see _.transform
2325 */
2326 transform<TResult>(iteratee: MemoVoidDictionaryIterator<T[keyof T], keyof T, TResult>, accumulator?: TResult): ExpChain<TResult>;
2327 /**
2328 * @see _.transform
2329 */
2330 transform(): ExpChain<T extends Dictionary<unknown> ? Dictionary<any> : T>;
2331 }
2332 interface LoDashStatic {
2333 /**
2334 * Removes the property at path of object.
2335 *
2336 * Note: This method mutates object.
2337 *
2338 * @param object The object to modify.
2339 * @param path The path of the property to unset.
2340 * @return Returns true if the property is deleted, else false.
2341 */
2342 unset(object: any, path: PropertyPath): boolean;
2343 }
2344 interface LoDashImplicitWrapper<TValue> {
2345 /**
2346 * @see _.unset
2347 */
2348 unset(path: PropertyPath): Primitive<boolean>;
2349 }
2350 interface LoDashExplicitWrapper<TValue> {
2351 /**
2352 * @see _.unset
2353 */
2354 unset(path: PropertyPath): PrimitiveChain<boolean>;
2355 }
2356 interface LoDashStatic {
2357 /**
2358 * This method is like _.set except that accepts updater to produce the value to set. Use _.updateWith to
2359 * customize path creation. The updater is invoked with one argument: (value).
2360 *
2361 * @param object The object to modify.
2362 * @param path The path of the property to set.
2363 * @param updater The function to produce the updated value.
2364 * @return Returns object.
2365 */
2366 update(object: object, path: PropertyPath, updater: (value: any) => any): any;
2367 }
2368 interface LoDashImplicitWrapper<TValue> {
2369 /**
2370 * @see _.update
2371 */
2372 update(path: PropertyPath, updater: (value: any) => any): Object<any>;
2373 }
2374 interface LoDashExplicitWrapper<TValue> {
2375 /**
2376 * @see _.update
2377 */
2378 update(path: PropertyPath, updater: (value: any) => any): ObjectChain<any>;
2379 }
2380 interface LoDashStatic {
2381 /**
2382 * This method is like `_.update` except that it accepts `customizer` which is
2383 * invoked to produce the objects of `path`. If `customizer` returns `undefined`
2384 * path creation is handled by the method instead. The `customizer` is invoked
2385 * with three arguments: (nsValue, key, nsObject).
2386 *
2387 * **Note:** This method mutates `object`.
2388 *
2389 * @since 4.6.0
2390 * @category Object
2391 * @param object The object to modify.
2392 * @param path The path of the property to set.
2393 * @param updater The function to produce the updated value.
2394 * @param [customizer] The function to customize assigned values.
2395 * @returns Returns `object`.
2396 * @example
2397 *
2398 * var object = {};
2399 *
2400 * _.updateWith(object, '[0][1]', _.constant('a'), Object);
2401 * // => { '0': { '1': 'a' } }
2402 */
2403 updateWith<T extends object>(object: T, path: PropertyPath, updater: (oldValue: any) => any, customizer?: SetWithCustomizer<T>): T;
2404 /**
2405 * @see _.updateWith
2406 */
2407 updateWith<T extends object, TResult>(object: T, path: PropertyPath, updater: (oldValue: any) => any, customizer?: SetWithCustomizer<T>): TResult;
2408 }
2409 interface Object<T> {
2410 /**
2411 * @see _.updateWith
2412 */
2413 updateWith(path: PropertyPath, updater: (oldValue: any) => any, customizer?: SetWithCustomizer<T>): this;
2414 /**
2415 * @see _.updateWith
2416 */
2417 updateWith<TResult>(path: PropertyPath, updater: (oldValue: any) => any, customizer?: SetWithCustomizer<T>): Object<TResult>;
2418 }
2419 interface ObjectChain<T> {
2420 /**
2421 * @see _.updateWith
2422 */
2423 updateWith(path: PropertyPath, updater: (oldValue: any) => any, customizer?: SetWithCustomizer<T>): this;
2424 /**
2425 * @see _.updateWith
2426 */
2427 updateWith<TResult>(path: PropertyPath, updater: (oldValue: any) => any, customizer?: SetWithCustomizer<T>): ObjectChain<TResult>;
2428 }
2429 interface LoDashStatic {
2430 /**
2431 * Creates an array of the own enumerable property values of object.
2432 *
2433 * @param object The object to query.
2434 * @return Returns an array of property values.
2435 */
2436 values<T>(object: Dictionary<T> | NumericDictionary<T> | List<T> | null | undefined): T[];
2437 /**
2438 * @see _.values
2439 */
2440 values<T extends object>(object: T | null | undefined): Array<T[keyof T]>;
2441 /**
2442 * @see _.values
2443 */
2444 values(object: any): any[];
2445 }
2446 interface String {
2447 /**
2448 * @see _.values
2449 */
2450 values(): Collection<string>;
2451 }
2452 interface Object<T> {
2453 /**
2454 * @see _.values
2455 */
2456 values(): Collection<T[keyof T]>;
2457 }
2458 interface ObjectChain<T> {
2459 /**
2460 * @see _.values
2461 */
2462 values(): CollectionChain<T[keyof T]>;
2463 }
2464 interface StringChain {
2465 /**
2466 * @see _.values
2467 */
2468 values(): CollectionChain<string>;
2469 }
2470 interface StringNullableChain {
2471 /**
2472 * @see _.values
2473 */
2474 values(): CollectionChain<string>;
2475 }
2476 interface LoDashStatic {
2477 /**
2478 * Creates an array of the own and inherited enumerable property values of object.
2479 *
2480 * @param object The object to query.
2481 * @return Returns the array of property values.
2482 */
2483 valuesIn<T>(object: Dictionary<T> | NumericDictionary<T> | List<T> | null | undefined): T[];
2484 /**
2485 * @see _.valuesIn
2486 */
2487 valuesIn<T extends object>(object: T | null | undefined): Array<T[keyof T]>;
2488 }
2489 interface String {
2490 /**
2491 * @see _.valuesIn
2492 */
2493 valuesIn(): Collection<string>;
2494 }
2495 interface Object<T> {
2496 /**
2497 * @see _.valuesIn
2498 */
2499 valuesIn(): Collection<T[keyof T]>;
2500 }
2501 interface StringChain {
2502 /**
2503 * @see _.valuesIn
2504 */
2505 valuesIn(): CollectionChain<string>;
2506 }
2507 interface StringNullableChain {
2508 /**
2509 * @see _.valuesIn
2510 */
2511 valuesIn(): CollectionChain<string>;
2512 }
2513 interface ObjectChain<T> {
2514 /**
2515 * @see _.valuesIn
2516 */
2517 valuesIn(): CollectionChain<T[keyof T]>;
2518 }
2519}
2520
\No newline at end of file