UNPKG

561 kBTypeScriptView Raw
1// Type definitions for Lo-Dash 4.14
2// Project: http://lodash.com/
3// Definitions by: Brian Zengel <https://github.com/bczengel>, Ilya Mochalov <https://github.com/chrootsu>, Stepan Mikhaylyuk <https://github.com/stepancar>, Eric L Anderson <https://github.com/ericanderson>
4// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
5// TypeScript Version: 2.2
6
7/**
8### 4.0.0 Changelog (https://github.com/lodash/lodash/wiki/Changelog)
9
10#### TODO:
11removed:
12- [x] Removed _.support
13- [x] Removed _.findWhere in favor of _.find with iteratee shorthand
14- [x] Removed _.where in favor of _.filter with iteratee shorthand
15- [x] Removed _.pluck in favor of _.map with iteratee shorthand
16
17renamed:
18- [x] Renamed _.first to _.head
19- [x] Renamed _.indexBy to _.keyBy
20- [x] Renamed _.invoke to _.invokeMap
21- [x] Renamed _.overArgs to _.overArgs
22- [x] Renamed _.padLeft & _.padRight to _.padStart & _.padEnd
23- [x] Renamed _.pairs to _.toPairs
24- [x] Renamed _.rest to _.tail
25- [x] Renamed _.restParam to _.rest
26- [x] Renamed _.sortByOrder to _.orderBy
27- [x] Renamed _.trimLeft & _.trimRight to _.trimStart & _.trimEnd
28- [x] Renamed _.trunc to _.truncate
29
30split:
31- [x] Split _.indexOf & _.lastIndexOf into _.sortedIndexOf & _.sortedLastIndexOf
32- [x] Split _.max & _.min into _.maxBy & _.minBy
33- [x] Split _.omit & _.pick into _.omitBy & _.pickBy
34- [x] Split _.sample into _.sampleSize
35- [x] Split _.sortedIndex into _.sortedIndexBy
36- [x] Split _.sortedLastIndex into _.sortedLastIndexBy
37- [x] Split _.uniq into _.sortedUniq, _.sortedUniqBy, & _.uniqBy
38
39changes:
40- [x] Absorbed _.sortByAll into _.sortBy
41- [x] Changed the category of _.at to “Object”
42- [x] Changed the category of _.bindAll to “Utility”
43- [x] Made _.capitalize uppercase the first character & lowercase the rest
44- [x] Made _.functions return only own method names
45
46added 23 array methods:
47- [x] _.concat
48- [x] _.differenceBy
49- [x] _.differenceWith
50- [x] _.flatMap
51- [x] _.fromPairs
52- [x] _.intersectionBy
53- [x] _.intersectionWith
54- [x] _.join
55- [x] _.pullAll
56- [x] _.pullAllBy
57- [x] _.reverse
58- [x] _.sortedIndexBy
59- [x] _.sortedIndexOf
60- [x] _.sortedLastIndexBy
61- [x] _.sortedLastIndexOf
62- [x] _.sortedUniq
63- [x] _.sortedUniqBy
64- [x] _.unionBy
65- [x] _.unionWith
66- [x] _.uniqBy
67- [x] _.uniqWith
68- [x] _.xorBy
69- [x] _.xorWith
70
71added 20 lang methods:
72- [x] _.cloneDeepWith
73- [x] _.cloneWith
74- [x] _.eq
75- [x] _.isArrayLike
76- [x] _.isArrayLikeObject
77- [x] _.isEqualWith
78- [x] _.isInteger
79- [x] _.isLength
80- [x] _.isMatchWith
81- [x] _.isNil
82- [x] _.isObjectLike
83- [x] _.isSafeInteger
84- [x] _.isSymbol
85- [x] _.toInteger
86- [x] _.toLength
87- [x] _.toNumber
88- [x] _.toSafeInteger
89- [x] _.toString
90- [X] _.conforms
91- [X] _.conformsTo
92
93added 13 object methods:
94- [x] _.assignIn
95- [x] _.assignInWith
96- [x] _.assignWith
97- [x] _.functionsIn
98- [x] _.hasIn
99- [x] _.mergeWith
100- [x] _.omitBy
101- [x] _.pickBy
102
103added 8 string methods:
104- [x] _.lowerCase
105- [x] _.lowerFirst
106- [x] _.upperCase
107- [x] _.upperFirst
108- [x] _.toLower
109- [x] _.toUpper
110
111added 8 utility methods:
112- [x] _.toPath
113
114added 4 math methods:
115- [x] _.maxBy
116- [x] _.mean
117- [x] _.minBy
118- [x] _.sumBy
119
120added 2 function methods:
121- [x] _.flip
122- [x] _.unary
123
124added 2 number methods:
125- [x] _.clamp
126- [x] _.subtract
127
128added collection method:
129- [x] _.sampleSize
130
131Added 3 aliases
132
133- [x] _.first as an alias of _.head
134
135Removed 17 aliases
136- [x] Removed aliase _.all
137- [x] Removed aliase _.any
138- [x] Removed aliase _.backflow
139- [x] Removed aliase _.callback
140- [x] Removed aliase _.collect
141- [x] Removed aliase _.compose
142- [x] Removed aliase _.contains
143- [x] Removed aliase _.detect
144- [x] Removed aliase _.foldl
145- [x] Removed aliase _.foldr
146- [x] Removed aliase _.include
147- [x] Removed aliase _.inject
148- [x] Removed aliase _.methods
149- [x] Removed aliase _.object
150- [x] Removed aliase _.run
151- [x] Removed aliase _.select
152- [x] Removed aliase _.unique
153
154Other changes
155- [x] Added support for array buffers to _.isEqual
156- [x] Added support for converting iterators to _.toArray
157- [x] Added support for deep paths to _.zipObject
158- [x] Changed UMD to export to window or self when available regardless of other exports
159- [x] Ensured debounce cancel clears args & thisArg references
160- [x] Ensured _.add, _.subtract, & _.sum don’t skip NaN values
161- [x] Ensured _.clone treats generators like functions
162- [x] Ensured _.clone produces clones with the source’s [[Prototype]]
163- [x] Ensured _.defaults assigns properties that shadow Object.prototype
164- [x] Ensured _.defaultsDeep doesn’t merge a string into an array
165- [x] Ensured _.defaultsDeep & _.merge don’t modify sources
166- [x] Ensured _.defaultsDeep works with circular references
167- [x] Ensured _.keys skips “length” on strict mode arguments objects in Safari 9
168- [x] Ensured _.merge doesn’t convert strings to arrays
169- [x] Ensured _.merge merges plain-objects onto non plain-objects
170- [x] Ensured _#plant resets iterator data of cloned sequences
171- [x] Ensured _.random swaps min & max if min is greater than max
172- [x] Ensured _.range preserves the sign of start of -0
173- [x] Ensured _.reduce & _.reduceRight use getIteratee in their array branch
174- [x] Fixed rounding issue with the precision param of _.floor
175- [x] Added flush method to debounced & throttled functions
176
177** LATER **
178Misc:
179- [ ] Made _.forEach, _.forIn, _.forOwn, & _.times implicitly end a chain sequence
180- [ ] Removed thisArg params from most methods
181- [ ] Made “By” methods provide a single param to iteratees
182- [ ] Made _.words chainable by default
183- [ ] Removed isDeep params from _.clone & _.flatten
184- [ ] Removed _.bindAll support for binding all methods when no names are provided
185- [ ] Removed func-first param signature from _.before & _.after
186- [ ] _.extend as an alias of _.assignIn
187- [ ] _.extendWith as an alias of _.assignInWith
188- [ ] Added clear method to _.memoize.Cache
189- [ ] Added support for ES6 maps, sets, & symbols to _.clone, _.isEqual, & _.toArray
190- [ ] Enabled _.flow & _.flowRight to accept an array of functions
191- [ ] Ensured “Collection” methods treat functions as objects
192- [ ] Ensured _.assign, _.defaults, & _.merge coerce object values to objects
193- [ ] Ensured _.bindKey bound functions call object[key] when called with the new operator
194- [ ] Ensured _.isFunction returns true for generator functions
195- [ ] Ensured _.merge assigns typed arrays directly
196- [ ] Made _(...) an iterator & iterable
197- [ ] Made _.drop, _.take, & right forms coerce n of undefined to 0
198
199Methods:
200- [ ] _.concat
201- [ ] _.differenceBy
202- [ ] _.differenceWith
203- [ ] _.flatMap
204- [ ] _.fromPairs
205- [ ] _.intersectionBy
206- [ ] _.intersectionWith
207- [ ] _.join
208- [ ] _.pullAll
209- [ ] _.pullAllBy
210- [ ] _.reverse
211- [ ] _.sortedLastIndexOf
212- [ ] _.unionBy
213- [ ] _.unionWith
214- [ ] _.uniqWith
215- [ ] _.xorBy
216- [ ] _.xorWith
217- [ ] _.toString
218
219- [ ] _.invoke
220- [ ] _.setWith
221- [ ] _.toPairs
222- [ ] _.toPairsIn
223- [ ] _.unset
224
225- [ ] _.replace
226- [ ] _.split
227
228- [ ] _.cond
229- [ ] _.nthArg
230- [ ] _.over
231- [ ] _.overEvery
232- [ ] _.overSome
233- [ ] _.rangeRight
234
235- [ ] _.next
236*/
237
238export = _;
239export as namespace _;
240
241declare var _: _.LoDashStatic;
242
243type PartialObject<T> = Partial<T>;
244
245declare namespace _ {
246 type Many<T> = T | T[];
247
248 interface LoDashStatic {
249 /**
250 * Creates a lodash object which wraps the given value to enable intuitive method chaining.
251 *
252 * In addition to Lo-Dash methods, wrappers also have the following Array methods:
253 * concat, join, pop, push, reverse, shift, slice, sort, splice, and unshift
254 *
255 * Chaining is supported in custom builds as long as the value method is implicitly or
256 * explicitly included in the build.
257 *
258 * The chainable wrapper functions are:
259 * after, assign, bind, bindAll, bindKey, chain, chunk, compact, compose, concat, countBy,
260 * createCallback, curry, debounce, defaults, defer, delay, difference, filter, flatten,
261 * forEach, forEachRight, forIn, forInRight, forOwn, forOwnRight, functions, groupBy,
262 * keyBy, initial, intersection, invert, invoke, keys, map, max, memoize, merge, min,
263 * object, omit, once, pairs, partial, partialRight, pick, pluck, pull, push, range, reject,
264 * remove, rest, reverse, sample, shuffle, slice, sort, sortBy, splice, tap, throttle, times,
265 * toArray, transform, union, uniq, unset, unshift, unzip, values, where, without, wrap, and zip
266 *
267 * The non-chainable wrapper functions are:
268 * clone, cloneDeep, contains, escape, every, find, findIndex, findKey, findLast,
269 * findLastIndex, findLastKey, has, identity, indexOf, isArguments, isArray, isBoolean,
270 * isDate, isElement, isEmpty, isEqual, isFinite, isFunction, isNaN, isNull, isNumber,
271 * isObject, isPlainObject, isRegExp, isString, isUndefined, join, lastIndexOf, mixin,
272 * noConflict, parseInt, pop, random, reduce, reduceRight, result, shift, size, some,
273 * sortedIndex, runInContext, template, unescape, uniqueId, and value
274 *
275 * The wrapper functions first and last return wrapped values when n is provided, otherwise
276 * they return unwrapped values.
277 *
278 * Explicit chaining can be enabled by using the _.chain method.
279 **/
280 (value: number): LoDashImplicitWrapper<number>;
281 (value: string): LoDashImplicitStringWrapper;
282 (value: boolean): LoDashImplicitWrapper<boolean>;
283 (value: number[]): LoDashImplicitNumberArrayWrapper;
284 <T>(value: T[]): LoDashImplicitArrayWrapper<T>;
285 <T extends {}>(value: T): LoDashImplicitObjectWrapper<T>;
286 (value: any): LoDashImplicitWrapper<any>;
287
288 /**
289 * The semantic version number.
290 **/
291 VERSION: string;
292
293 /**
294 * By default, the template delimiters used by Lo-Dash are similar to those in embedded Ruby
295 * (ERB). Change the following template settings to use alternative delimiters.
296 **/
297 templateSettings: TemplateSettings;
298 }
299
300 /**
301 * By default, the template delimiters used by Lo-Dash are similar to those in embedded Ruby
302 * (ERB). Change the following template settings to use alternative delimiters.
303 **/
304 interface TemplateSettings {
305 /**
306 * The "escape" delimiter.
307 **/
308 escape?: RegExp;
309
310 /**
311 * The "evaluate" delimiter.
312 **/
313 evaluate?: RegExp;
314
315 /**
316 * An object to import into the template as local variables.
317 **/
318 imports?: Dictionary<any>;
319
320 /**
321 * The "interpolate" delimiter.
322 **/
323 interpolate?: RegExp;
324
325 /**
326 * Used to reference the data object in the template text.
327 **/
328 variable?: string;
329 }
330
331 /**
332 * Creates a cache object to store key/value pairs.
333 */
334 interface MapCache {
335 /**
336 * Removes `key` and its value from the cache.
337 * @param key The key of the value to remove.
338 * @return Returns `true` if the entry was removed successfully, else `false`.
339 */
340 delete(key: string): boolean;
341
342 /**
343 * Gets the cached value for `key`.
344 * @param key The key of the value to get.
345 * @return Returns the cached value.
346 */
347 get(key: string): any;
348
349 /**
350 * Checks if a cached value for `key` exists.
351 * @param key The key of the entry to check.
352 * @return Returns `true` if an entry for `key` exists, else `false`.
353 */
354 has(key: string): boolean;
355
356 /**
357 * Sets `value` to `key` of the cache.
358 * @param key The key of the value to cache.
359 * @param value The value to cache.
360 * @return Returns the cache object.
361 */
362 set(key: string, value: any): _.Dictionary<any>;
363 }
364 interface MapCacheConstructor {
365 new (): MapCache;
366 }
367
368 interface LoDashWrapperBase<T, TWrapper> { }
369
370 interface LoDashImplicitWrapperBase<T, TWrapper> extends LoDashWrapperBase<T, TWrapper> { }
371
372 interface LoDashExplicitWrapperBase<T, TWrapper> extends LoDashWrapperBase<T, TWrapper> { }
373
374 interface LoDashImplicitWrapper<T> extends LoDashImplicitWrapperBase<T, LoDashImplicitWrapper<T>> { }
375
376 interface LoDashExplicitWrapper<T> extends LoDashExplicitWrapperBase<T, LoDashExplicitWrapper<T>> { }
377
378 interface LoDashImplicitStringWrapper extends LoDashImplicitWrapper<string> { }
379
380 interface LoDashExplicitStringWrapper extends LoDashExplicitWrapper<string> { }
381
382 interface LoDashImplicitObjectWrapper<T> extends LoDashImplicitWrapperBase<T, LoDashImplicitObjectWrapper<T>> { }
383
384 interface LoDashExplicitObjectWrapper<T> extends LoDashExplicitWrapperBase<T, LoDashExplicitObjectWrapper<T>> { }
385
386 interface LoDashImplicitArrayWrapper<T> extends LoDashImplicitWrapperBase<T[], LoDashImplicitArrayWrapper<T>> {
387 pop(): T;
388 push(...items: T[]): LoDashImplicitArrayWrapper<T>;
389 shift(): T;
390 sort(compareFn?: (a: T, b: T) => number): LoDashImplicitArrayWrapper<T>;
391 splice(start: number): LoDashImplicitArrayWrapper<T>;
392 splice(start: number, deleteCount: number, ...items: any[]): LoDashImplicitArrayWrapper<T>;
393 unshift(...items: T[]): LoDashImplicitArrayWrapper<T>;
394 }
395
396 interface LoDashExplicitArrayWrapper<T> extends LoDashExplicitWrapperBase<T[], LoDashExplicitArrayWrapper<T>> {
397 pop(): LoDashExplicitObjectWrapper<T>;
398 push(...items: T[]): LoDashExplicitArrayWrapper<T>;
399 shift(): LoDashExplicitObjectWrapper<T>;
400 sort(compareFn?: (a: T, b: T) => number): LoDashExplicitArrayWrapper<T>;
401 splice(start: number): LoDashExplicitArrayWrapper<T>;
402 splice(start: number, deleteCount: number, ...items: any[]): LoDashExplicitArrayWrapper<T>;
403 unshift(...items: T[]): LoDashExplicitArrayWrapper<T>;
404 }
405
406 interface LoDashImplicitNumberArrayWrapper extends LoDashImplicitArrayWrapper<number> { }
407
408 interface LoDashExplicitNumberArrayWrapper extends LoDashExplicitArrayWrapper<number> { }
409
410 /*********
411 * Array *
412 *********/
413
414 //_.chunk
415 interface LoDashStatic {
416 /**
417 * Creates an array of elements split into groups the length of size. If collection can’t be split evenly, the
418 * final chunk will be the remaining elements.
419 *
420 * @param array The array to process.
421 * @param size The length of each chunk.
422 * @return Returns the new array containing chunks.
423 */
424 chunk<T>(
425 array: List<T>,
426 size?: number
427 ): T[][];
428 }
429
430 interface LoDashImplicitArrayWrapper<T> {
431 /**
432 * @see _.chunk
433 */
434 chunk(size?: number): LoDashImplicitArrayWrapper<T[]>;
435 }
436
437 interface LoDashImplicitObjectWrapper<T> {
438 /**
439 * @see _.chunk
440 */
441 chunk<TResult>(size?: number): LoDashImplicitArrayWrapper<TResult[]>;
442 }
443
444 interface LoDashExplicitArrayWrapper<T> {
445 /**
446 * @see _.chunk
447 */
448 chunk(size?: number): LoDashExplicitArrayWrapper<T[]>;
449 }
450
451 interface LoDashExplicitObjectWrapper<T> {
452 /**
453 * @see _.chunk
454 */
455 chunk<TResult>(size?: number): LoDashExplicitArrayWrapper<TResult[]>;
456 }
457
458 //_.compact
459 interface LoDashStatic {
460 /**
461 * Creates an array with all falsey values removed. The values false, null, 0, "", undefined, and NaN are
462 * falsey.
463 *
464 * @param array The array to compact.
465 * @return (Array) Returns the new array of filtered values.
466 */
467 compact<T>(array?: List<T | undefined>): T[];
468 }
469
470 interface LoDashImplicitArrayWrapper<T> {
471 /**
472 * @see _.compact
473 */
474 compact(): LoDashImplicitArrayWrapper<T>;
475 }
476
477 interface LoDashImplicitObjectWrapper<T> {
478 /**
479 * @see _.compact
480 */
481 compact<TResult>(): LoDashImplicitArrayWrapper<TResult>;
482 }
483
484 interface LoDashExplicitArrayWrapper<T> {
485 /**
486 * @see _.compact
487 */
488 compact(): LoDashExplicitArrayWrapper<T>;
489 }
490
491 interface LoDashExplicitObjectWrapper<T> {
492 /**
493 * @see _.compact
494 */
495 compact<TResult>(): LoDashExplicitArrayWrapper<TResult>;
496 }
497
498 //_.concat DUMMY
499 interface LoDashStatic {
500 /**
501 * Creates a new array concatenating `array` with any additional arrays
502 * and/or values.
503 *
504 * @static
505 * @memberOf _
506 * @category Array
507 * @param {Array} array The array to concatenate.
508 * @param {...*} [values] The values to concatenate.
509 * @returns {Array} Returns the new concatenated array.
510 * @example
511 *
512 * var array = [1];
513 * var other = _.concat(array, 2, [3], [[4]]);
514 *
515 * console.log(other);
516 * // => [1, 2, 3, [4]]
517 *
518 * console.log(array);
519 * // => [1]
520 */
521 concat<T>(array: List<T>, ...values: Array<T|List<T>>): T[];
522 }
523
524 //_.difference
525 interface LoDashStatic {
526 /**
527 * Creates an array of unique array values not included in the other provided arrays using SameValueZero for
528 * equality comparisons.
529 *
530 * @param array The array to inspect.
531 * @param values The arrays of values to exclude.
532 * @return Returns the new array of filtered values.
533 */
534 difference<T>(
535 array: List<T>,
536 ...values: Array<List<T>>
537 ): T[];
538 }
539
540 interface LoDashImplicitArrayWrapper<T> {
541 /**
542 * @see _.difference
543 */
544 difference(...values: Array<List<T>>): LoDashImplicitArrayWrapper<T>;
545 }
546
547 interface LoDashImplicitObjectWrapper<T> {
548 /**
549 * @see _.difference
550 */
551 difference<TValue>(...values: Array<List<TValue>>): LoDashImplicitArrayWrapper<TValue>;
552 }
553
554 interface LoDashExplicitArrayWrapper<T> {
555 /**
556 * @see _.difference
557 */
558 difference(...values: Array<List<T>>): LoDashExplicitArrayWrapper<T>;
559 }
560
561 interface LoDashExplicitObjectWrapper<T> {
562 /**
563 * @see _.difference
564 */
565 difference<TValue>(...values: Array<List<TValue>>): LoDashExplicitArrayWrapper<TValue>;
566 }
567
568 //_.differenceBy
569 interface LoDashStatic {
570 /**
571 * This method is like _.difference except that it accepts iteratee which is invoked for each element of array
572 * and values to generate the criterion by which uniqueness is computed. The iteratee is invoked with one
573 * argument: (value).
574 *
575 * @param array The array to inspect.
576 * @param values The values to exclude.
577 * @param iteratee The iteratee invoked per element.
578 * @returns Returns the new array of filtered values.
579 */
580 differenceBy<T>(
581 array: List<T>,
582 values?: List<T>,
583 iteratee?: ((value: T) => any)|string
584 ): T[];
585
586 /**
587 * @see _.differenceBy
588 */
589 differenceBy<T, W extends Object>(
590 array: List<T>,
591 values?: List<T>,
592 iteratee?: W
593 ): T[];
594
595 /**
596 * @see _.differenceBy
597 */
598 differenceBy<T>(
599 array: List<T>,
600 values1?: List<T>,
601 values2?: List<T>,
602 iteratee?: ((value: T) => any)|string
603 ): T[];
604
605 /**
606 * @see _.differenceBy
607 */
608 differenceBy<T, W extends Object>(
609 array: List<T>,
610 values1?: List<T>,
611 values2?: List<T>,
612 iteratee?: W
613 ): T[];
614
615 /**
616 * @see _.differenceBy
617 */
618 differenceBy<T>(
619 array: List<T>,
620 values1?: List<T>,
621 values2?: List<T>,
622 values3?: List<T>,
623 iteratee?: ((value: T) => any)|string
624 ): T[];
625
626 /**
627 * @see _.differenceBy
628 */
629 differenceBy<T, W extends Object>(
630 array: List<T>,
631 values1?: List<T>,
632 values2?: List<T>,
633 values3?: List<T>,
634 iteratee?: W
635 ): T[];
636
637 /**
638 * @see _.differenceBy
639 */
640 differenceBy<T, W extends Object>(
641 array: List<T>,
642 values1?: List<T>,
643 values2?: List<T>,
644 values3?: List<T>,
645 values4?: List<T>,
646 iteratee?: W
647 ): T[];
648
649 /**
650 * @see _.differenceBy
651 */
652 differenceBy<T>(
653 array: List<T>,
654 values1?: List<T>,
655 values2?: List<T>,
656 values3?: List<T>,
657 values4?: List<T>,
658 iteratee?: ((value: T) => any)|string
659 ): T[];
660
661 /**
662 * @see _.differenceBy
663 */
664 differenceBy<T>(
665 array: List<T>,
666 values1?: List<T>,
667 values2?: List<T>,
668 values3?: List<T>,
669 values4?: List<T>,
670 values5?: List<T>,
671 iteratee?: ((value: T) => any)|string
672 ): T[];
673
674 /**
675 * @see _.differenceBy
676 */
677 differenceBy<T, W extends Object>(
678 array: List<T>,
679 values1?: List<T>,
680 values2?: List<T>,
681 values3?: List<T>,
682 values4?: List<T>,
683 values5?: List<T>,
684 iteratee?: W
685 ): T[];
686
687 /**
688 * @see _.differenceBy
689 */
690 differenceBy<T>(
691 array: List<T>,
692 ...values: any[]
693 ): T[];
694 }
695
696 interface LoDashImplicitArrayWrapper<T> {
697 /**
698 * @see _.differenceBy
699 */
700 differenceBy<T>(
701 values?: List<T>,
702 iteratee?: ((value: T) => any)|string
703 ): LoDashImplicitArrayWrapper<T>;
704
705 /**
706 * @see _.differenceBy
707 */
708 differenceBy<T, W extends Object>(
709 values?: List<T>,
710 iteratee?: W
711 ): LoDashImplicitArrayWrapper<T>;
712
713 /**
714 * @see _.differenceBy
715 */
716 differenceBy<T>(
717 values1?: List<T>,
718 values2?: List<T>,
719 iteratee?: ((value: T) => any)|string
720 ): LoDashImplicitArrayWrapper<T>;
721
722 /**
723 * @see _.differenceBy
724 */
725 differenceBy<T, W extends Object>(
726 values1?: List<T>,
727 values2?: List<T>,
728 iteratee?: W
729 ): LoDashImplicitArrayWrapper<T>;
730
731 /**
732 * @see _.differenceBy
733 */
734 differenceBy<T>(
735 values1?: List<T>,
736 values2?: List<T>,
737 values3?: List<T>,
738 iteratee?: ((value: T) => any)|string
739 ): LoDashImplicitArrayWrapper<T>;
740
741 /**
742 * @see _.differenceBy
743 */
744 differenceBy<T, W extends Object>(
745 values1?: List<T>,
746 values2?: List<T>,
747 values3?: List<T>,
748 iteratee?: W
749 ): LoDashImplicitArrayWrapper<T>;
750
751 /**
752 * @see _.differenceBy
753 */
754 differenceBy<T>(
755 values1?: List<T>,
756 values2?: List<T>,
757 values3?: List<T>,
758 values4?: List<T>,
759 iteratee?: ((value: T) => any)|string
760 ): LoDashImplicitArrayWrapper<T>;
761
762 /**
763 * @see _.differenceBy
764 */
765 differenceBy<T, W extends Object>(
766 values1?: List<T>,
767 values2?: List<T>,
768 values3?: List<T>,
769 values4?: List<T>,
770 iteratee?: W
771 ): LoDashImplicitArrayWrapper<T>;
772
773 /**
774 * @see _.differenceBy
775 */
776 differenceBy<T>(
777 values1?: List<T>,
778 values2?: List<T>,
779 values3?: List<T>,
780 values4?: List<T>,
781 values5?: List<T>,
782 iteratee?: ((value: T) => any)|string
783 ): LoDashImplicitArrayWrapper<T>;
784
785 /**
786 * @see _.differenceBy
787 */
788 differenceBy<T, W extends Object>(
789 values1?: List<T>,
790 values2?: List<T>,
791 values3?: List<T>,
792 values4?: List<T>,
793 values5?: List<T>,
794 iteratee?: W
795 ): LoDashImplicitArrayWrapper<T>;
796
797 /**
798 * @see _.differenceBy
799 */
800 differenceBy<T>(
801 ...values: any[]
802 ): LoDashImplicitArrayWrapper<T>;
803 }
804
805 interface LoDashImplicitObjectWrapper<T> {
806 /**
807 * @see _.differenceBy
808 */
809 differenceBy<T>(
810 values?: List<T>,
811 iteratee?: ((value: T) => any)|string
812 ): LoDashImplicitArrayWrapper<T>;
813
814 /**
815 * @see _.differenceBy
816 */
817 differenceBy<T, W extends Object>(
818 values?: List<T>,
819 iteratee?: W
820 ): LoDashImplicitArrayWrapper<T>;
821
822 /**
823 * @see _.differenceBy
824 */
825 differenceBy<T>(
826 values1?: List<T>,
827 values2?: List<T>,
828 iteratee?: ((value: T) => any)|string
829 ): LoDashImplicitArrayWrapper<T>;
830
831 /**
832 * @see _.differenceBy
833 */
834 differenceBy<T, W extends Object>(
835 values1?: List<T>,
836 values2?: List<T>,
837 iteratee?: W
838 ): LoDashImplicitArrayWrapper<T>;
839
840 /**
841 * @see _.differenceBy
842 */
843 differenceBy<T>(
844 values1?: List<T>,
845 values2?: List<T>,
846 values3?: List<T>,
847 iteratee?: ((value: T) => any)|string
848 ): LoDashImplicitArrayWrapper<T>;
849
850 /**
851 * @see _.differenceBy
852 */
853 differenceBy<T, W extends Object>(
854 values1?: List<T>,
855 values2?: List<T>,
856 values3?: List<T>,
857 iteratee?: W
858 ): LoDashImplicitArrayWrapper<T>;
859
860 /**
861 * @see _.differenceBy
862 */
863 differenceBy<T>(
864 values1?: List<T>,
865 values2?: List<T>,
866 values3?: List<T>,
867 values4?: List<T>,
868 iteratee?: ((value: T) => any)|string
869 ): LoDashImplicitArrayWrapper<T>;
870
871 /**
872 * @see _.differenceBy
873 */
874 differenceBy<T, W extends Object>(
875 values1?: List<T>,
876 values2?: List<T>,
877 values3?: List<T>,
878 values4?: List<T>,
879 iteratee?: W
880 ): LoDashImplicitArrayWrapper<T>;
881
882 /**
883 * @see _.differenceBy
884 */
885 differenceBy<T>(
886 values1?: List<T>,
887 values2?: List<T>,
888 values3?: List<T>,
889 values4?: List<T>,
890 values5?: List<T>,
891 iteratee?: ((value: T) => any)|string
892 ): LoDashImplicitArrayWrapper<T>;
893
894 /**
895 * @see _.differenceBy
896 */
897 differenceBy<T, W extends Object>(
898 values1?: List<T>,
899 values2?: List<T>,
900 values3?: List<T>,
901 values4?: List<T>,
902 values5?: List<T>,
903 iteratee?: W
904 ): LoDashImplicitArrayWrapper<T>;
905
906 /**
907 * @see _.differenceBy
908 */
909 differenceBy<T>(
910 ...values: any[]
911 ): LoDashImplicitArrayWrapper<T>;
912 }
913
914 interface LoDashExplicitArrayWrapper<T> {
915 /**
916 * @see _.differenceBy
917 */
918 differenceBy<T>(
919 values?: List<T>,
920 iteratee?: ((value: T) => any)|string
921 ): LoDashExplicitArrayWrapper<T>;
922
923 /**
924 * @see _.differenceBy
925 */
926 differenceBy<T, W extends Object>(
927 values?: List<T>,
928 iteratee?: W
929 ): LoDashExplicitArrayWrapper<T>;
930
931 /**
932 * @see _.differenceBy
933 */
934 differenceBy<T>(
935 values1?: List<T>,
936 values2?: List<T>,
937 iteratee?: ((value: T) => any)|string
938 ): LoDashExplicitArrayWrapper<T>;
939
940 /**
941 * @see _.differenceBy
942 */
943 differenceBy<T, W extends Object>(
944 values1?: List<T>,
945 values2?: List<T>,
946 iteratee?: W
947 ): LoDashExplicitArrayWrapper<T>;
948
949 /**
950 * @see _.differenceBy
951 */
952 differenceBy<T>(
953 values1?: List<T>,
954 values2?: List<T>,
955 values3?: List<T>,
956 iteratee?: ((value: T) => any)|string
957 ): LoDashExplicitArrayWrapper<T>;
958
959 /**
960 * @see _.differenceBy
961 */
962 differenceBy<T, W extends Object>(
963 values1?: List<T>,
964 values2?: List<T>,
965 values3?: List<T>,
966 iteratee?: W
967 ): LoDashExplicitArrayWrapper<T>;
968
969 /**
970 * @see _.differenceBy
971 */
972 differenceBy<T>(
973 values1?: List<T>,
974 values2?: List<T>,
975 values3?: List<T>,
976 values4?: List<T>,
977 iteratee?: ((value: T) => any)|string
978 ): LoDashExplicitArrayWrapper<T>;
979
980 /**
981 * @see _.differenceBy
982 */
983 differenceBy<T, W extends Object>(
984 values1?: List<T>,
985 values2?: List<T>,
986 values3?: List<T>,
987 values4?: List<T>,
988 iteratee?: W
989 ): LoDashExplicitArrayWrapper<T>;
990
991 /**
992 * @see _.differenceBy
993 */
994 differenceBy<T>(
995 values1?: List<T>,
996 values2?: List<T>,
997 values3?: List<T>,
998 values4?: List<T>,
999 values5?: List<T>,
1000 iteratee?: ((value: T) => any)|string
1001 ): LoDashExplicitArrayWrapper<T>;
1002
1003 /**
1004 * @see _.differenceBy
1005 */
1006 differenceBy<T, W extends Object>(
1007 values1?: List<T>,
1008 values2?: List<T>,
1009 values3?: List<T>,
1010 values4?: List<T>,
1011 values5?: List<T>,
1012 iteratee?: W
1013 ): LoDashExplicitArrayWrapper<T>;
1014
1015 /**
1016 * @see _.differenceBy
1017 */
1018 differenceBy<T>(
1019 ...values: any[]
1020 ): LoDashExplicitArrayWrapper<T>;
1021 }
1022
1023 interface LoDashExplicitObjectWrapper<T> {
1024 /**
1025 * @see _.differenceBy
1026 */
1027 differenceBy<T>(
1028 values?: List<T>,
1029 iteratee?: ((value: T) => any)|string
1030 ): LoDashExplicitArrayWrapper<T>;
1031
1032 /**
1033 * @see _.differenceBy
1034 */
1035 differenceBy<T, W extends Object>(
1036 values?: List<T>,
1037 iteratee?: W
1038 ): LoDashExplicitArrayWrapper<T>;
1039
1040 /**
1041 * @see _.differenceBy
1042 */
1043 differenceBy<T>(
1044 values1?: List<T>,
1045 values2?: List<T>,
1046 iteratee?: ((value: T) => any)|string
1047 ): LoDashExplicitArrayWrapper<T>;
1048
1049 /**
1050 * @see _.differenceBy
1051 */
1052 differenceBy<T, W extends Object>(
1053 values1?: List<T>,
1054 values2?: List<T>,
1055 iteratee?: W
1056 ): LoDashExplicitArrayWrapper<T>;
1057
1058 /**
1059 * @see _.differenceBy
1060 */
1061 differenceBy<T>(
1062 values1?: List<T>,
1063 values2?: List<T>,
1064 values3?: List<T>,
1065 iteratee?: ((value: T) => any)|string
1066 ): LoDashExplicitArrayWrapper<T>;
1067
1068 /**
1069 * @see _.differenceBy
1070 */
1071 differenceBy<T, W extends Object>(
1072 values1?: List<T>,
1073 values2?: List<T>,
1074 values3?: List<T>,
1075 iteratee?: W
1076 ): LoDashExplicitArrayWrapper<T>;
1077
1078 /**
1079 * @see _.differenceBy
1080 */
1081 differenceBy<T>(
1082 values1?: List<T>,
1083 values2?: List<T>,
1084 values3?: List<T>,
1085 values4?: List<T>,
1086 iteratee?: ((value: T) => any)|string
1087 ): LoDashExplicitArrayWrapper<T>;
1088
1089 /**
1090 * @see _.differenceBy
1091 */
1092 differenceBy<T, W extends Object>(
1093 values1?: List<T>,
1094 values2?: List<T>,
1095 values3?: List<T>,
1096 values4?: List<T>,
1097 iteratee?: W
1098 ): LoDashExplicitArrayWrapper<T>;
1099
1100 /**
1101 * @see _.differenceBy
1102 */
1103 differenceBy<T>(
1104 values1?: List<T>,
1105 values2?: List<T>,
1106 values3?: List<T>,
1107 values4?: List<T>,
1108 values5?: List<T>,
1109 iteratee?: ((value: T) => any)|string
1110 ): LoDashExplicitArrayWrapper<T>;
1111
1112 /**
1113 * @see _.differenceBy
1114 */
1115 differenceBy<T, W extends Object>(
1116 values1?: List<T>,
1117 values2?: List<T>,
1118 values3?: List<T>,
1119 values4?: List<T>,
1120 values5?: List<T>,
1121 iteratee?: W
1122 ): LoDashExplicitArrayWrapper<T>;
1123
1124 /**
1125 * @see _.differenceBy
1126 */
1127 differenceBy<T>(
1128 ...values: any[]
1129 ): LoDashExplicitArrayWrapper<T>;
1130 }
1131
1132 //_.differenceWith DUMMY
1133 interface LoDashStatic {
1134 /**
1135 * Creates an array of unique `array` values not included in the other
1136 * provided arrays using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
1137 * for equality comparisons.
1138 *
1139 * @static
1140 * @memberOf _
1141 * @category Array
1142 * @param {Array} array The array to inspect.
1143 * @param {...Array} [values] The values to exclude.
1144 * @returns {Array} Returns the new array of filtered values.
1145 * @example
1146 *
1147 * _.difference([3, 2, 1], [4, 2]);
1148 * // => [3, 1]
1149 */
1150 differenceWith(
1151 array: List<any>,
1152 ...values: any[]
1153 ): any[];
1154 }
1155
1156 //_.drop
1157 interface LoDashStatic {
1158 /**
1159 * Creates a slice of array with n elements dropped from the beginning.
1160 *
1161 * @param array The array to query.
1162 * @param n The number of elements to drop.
1163 * @return Returns the slice of array.
1164 */
1165 drop<T>(array: List<T>, n?: number): T[];
1166 }
1167
1168 interface LoDashImplicitArrayWrapper<T> {
1169 /**
1170 * @see _.drop
1171 */
1172 drop(n?: number): LoDashImplicitArrayWrapper<T>;
1173 }
1174
1175 interface LoDashImplicitObjectWrapper<T> {
1176 /**
1177 * @see _.drop
1178 */
1179 drop<T>(n?: number): LoDashImplicitArrayWrapper<T>;
1180 }
1181
1182 interface LoDashExplicitArrayWrapper<T> {
1183 /**
1184 * @see _.drop
1185 */
1186 drop(n?: number): LoDashExplicitArrayWrapper<T>;
1187 }
1188
1189 interface LoDashExplicitObjectWrapper<T> {
1190 /**
1191 * @see _.drop
1192 */
1193 drop<T>(n?: number): LoDashExplicitArrayWrapper<T>;
1194 }
1195
1196 //_.dropRight
1197 interface LoDashStatic {
1198 /**
1199 * Creates a slice of array with n elements dropped from the end.
1200 *
1201 * @param array The array to query.
1202 * @param n The number of elements to drop.
1203 * @return Returns the slice of array.
1204 */
1205 dropRight<T>(
1206 array: List<T>,
1207 n?: number
1208 ): T[];
1209 }
1210
1211 interface LoDashImplicitArrayWrapper<T> {
1212 /**
1213 * @see _.dropRight
1214 */
1215 dropRight(n?: number): LoDashImplicitArrayWrapper<T>;
1216 }
1217
1218 interface LoDashImplicitObjectWrapper<T> {
1219 /**
1220 * @see _.dropRight
1221 */
1222 dropRight<TResult>(n?: number): LoDashImplicitArrayWrapper<TResult>;
1223 }
1224
1225 interface LoDashExplicitArrayWrapper<T> {
1226 /**
1227 * @see _.dropRight
1228 */
1229 dropRight(n?: number): LoDashExplicitArrayWrapper<T>;
1230 }
1231
1232 interface LoDashExplicitObjectWrapper<T> {
1233 /**
1234 * @see _.dropRight
1235 */
1236 dropRight<TResult>(n?: number): LoDashExplicitArrayWrapper<TResult>;
1237 }
1238
1239 //_.dropRightWhile
1240 interface LoDashStatic {
1241 /**
1242 * Creates a slice of array excluding elements dropped from the end. Elements are dropped until predicate
1243 * returns falsey. The predicate is bound to thisArg and invoked with three arguments: (value, index, array).
1244 *
1245 * If a property name is provided for predicate the created _.property style callback returns the property
1246 * value of the given element.
1247 *
1248 * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for
1249 * elements that have a matching property value, else false.
1250 *
1251 * If an object is provided for predicate the created _.matches style callback returns true for elements that
1252 * match the properties of the given object, else false.
1253 *
1254 * @param array The array to query.
1255 * @param predicate The function invoked per iteration.
1256 * @param thisArg The this binding of predicate.
1257 * @return Returns the slice of array.
1258 */
1259 dropRightWhile<TValue>(
1260 array: List<TValue>,
1261 predicate?: ListIterator<TValue, boolean>
1262 ): TValue[];
1263
1264 /**
1265 * @see _.dropRightWhile
1266 */
1267 dropRightWhile<TValue>(
1268 array: List<TValue>,
1269 predicate?: string
1270 ): TValue[];
1271
1272 /**
1273 * @see _.dropRightWhile
1274 */
1275 dropRightWhile<TWhere, TValue>(
1276 array: List<TValue>,
1277 predicate?: TWhere
1278 ): TValue[];
1279 }
1280
1281 interface LoDashImplicitArrayWrapper<T> {
1282 /**
1283 * @see _.dropRightWhile
1284 */
1285 dropRightWhile(
1286 predicate?: ListIterator<T, boolean>
1287 ): LoDashImplicitArrayWrapper<T>;
1288
1289 /**
1290 * @see _.dropRightWhile
1291 */
1292 dropRightWhile(
1293 predicate?: string
1294 ): LoDashImplicitArrayWrapper<T>;
1295
1296 /**
1297 * @see _.dropRightWhile
1298 */
1299 dropRightWhile<TWhere>(
1300 predicate?: TWhere
1301 ): LoDashImplicitArrayWrapper<T>;
1302 }
1303
1304 interface LoDashImplicitObjectWrapper<T> {
1305 /**
1306 * @see _.dropRightWhile
1307 */
1308 dropRightWhile<TValue>(
1309 predicate?: ListIterator<TValue, boolean>
1310 ): LoDashImplicitArrayWrapper<TValue>;
1311
1312 /**
1313 * @see _.dropRightWhile
1314 */
1315 dropRightWhile<TValue>(
1316 predicate?: string
1317 ): LoDashImplicitArrayWrapper<TValue>;
1318
1319 /**
1320 * @see _.dropRightWhile
1321 */
1322 dropRightWhile<TWhere, TValue>(
1323 predicate?: TWhere
1324 ): LoDashImplicitArrayWrapper<TValue>;
1325 }
1326
1327 interface LoDashExplicitArrayWrapper<T> {
1328 /**
1329 * @see _.dropRightWhile
1330 */
1331 dropRightWhile(
1332 predicate?: ListIterator<T, boolean>
1333 ): LoDashExplicitArrayWrapper<T>;
1334
1335 /**
1336 * @see _.dropRightWhile
1337 */
1338 dropRightWhile(
1339 predicate?: string
1340 ): LoDashExplicitArrayWrapper<T>;
1341
1342 /**
1343 * @see _.dropRightWhile
1344 */
1345 dropRightWhile<TWhere>(
1346 predicate?: TWhere
1347 ): LoDashExplicitArrayWrapper<T>;
1348 }
1349
1350 interface LoDashExplicitObjectWrapper<T> {
1351 /**
1352 * @see _.dropRightWhile
1353 */
1354 dropRightWhile<TValue>(
1355 predicate?: ListIterator<TValue, boolean>
1356 ): LoDashExplicitArrayWrapper<TValue>;
1357
1358 /**
1359 * @see _.dropRightWhile
1360 */
1361 dropRightWhile<TValue>(
1362 predicate?: string
1363 ): LoDashExplicitArrayWrapper<TValue>;
1364
1365 /**
1366 * @see _.dropRightWhile
1367 */
1368 dropRightWhile<TWhere, TValue>(
1369 predicate?: TWhere
1370 ): LoDashExplicitArrayWrapper<TValue>;
1371 }
1372
1373 //_.dropWhile
1374 interface LoDashStatic {
1375 /**
1376 * Creates a slice of array excluding elements dropped from the beginning. Elements are dropped until predicate
1377 * returns falsey. The predicate is bound to thisArg and invoked with three arguments: (value, index, array).
1378 *
1379 * If a property name is provided for predicate the created _.property style callback returns the property
1380 * value of the given element.
1381 *
1382 * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for
1383 * elements that have a matching property value, else false.
1384 *
1385 * If an object is provided for predicate the created _.matches style callback returns true for elements that
1386 * have the properties of the given object, else false.
1387 *
1388 * @param array The array to query.
1389 * @param predicate The function invoked per iteration.
1390 * @param thisArg The this binding of predicate.
1391 * @return Returns the slice of array.
1392 */
1393 dropWhile<TValue>(
1394 array: List<TValue>,
1395 predicate?: ListIterator<TValue, boolean>
1396 ): TValue[];
1397
1398 /**
1399 * @see _.dropWhile
1400 */
1401 dropWhile<TValue>(
1402 array: List<TValue>,
1403 predicate?: string
1404 ): TValue[];
1405
1406 /**
1407 * @see _.dropWhile
1408 */
1409 dropWhile<TWhere, TValue>(
1410 array: List<TValue>,
1411 predicate?: TWhere
1412 ): TValue[];
1413 }
1414
1415 interface LoDashImplicitArrayWrapper<T> {
1416 /**
1417 * @see _.dropWhile
1418 */
1419 dropWhile(
1420 predicate?: ListIterator<T, boolean>
1421 ): LoDashImplicitArrayWrapper<T>;
1422
1423 /**
1424 * @see _.dropWhile
1425 */
1426 dropWhile(
1427 predicate?: string
1428 ): LoDashImplicitArrayWrapper<T>;
1429
1430 /**
1431 * @see _.dropWhile
1432 */
1433 dropWhile<TWhere>(
1434 predicate?: TWhere
1435 ): LoDashImplicitArrayWrapper<T>;
1436 }
1437
1438 interface LoDashImplicitObjectWrapper<T> {
1439 /**
1440 * @see _.dropWhile
1441 */
1442 dropWhile<TValue>(
1443 predicate?: ListIterator<TValue, boolean>
1444 ): LoDashImplicitArrayWrapper<TValue>;
1445
1446 /**
1447 * @see _.dropWhile
1448 */
1449 dropWhile<TValue>(
1450 predicate?: string
1451 ): LoDashImplicitArrayWrapper<TValue>;
1452
1453 /**
1454 * @see _.dropWhile
1455 */
1456 dropWhile<TWhere, TValue>(
1457 predicate?: TWhere
1458 ): LoDashImplicitArrayWrapper<TValue>;
1459 }
1460
1461 interface LoDashExplicitArrayWrapper<T> {
1462 /**
1463 * @see _.dropWhile
1464 */
1465 dropWhile(
1466 predicate?: ListIterator<T, boolean>
1467 ): LoDashExplicitArrayWrapper<T>;
1468
1469 /**
1470 * @see _.dropWhile
1471 */
1472 dropWhile(
1473 predicate?: string
1474 ): LoDashExplicitArrayWrapper<T>;
1475
1476 /**
1477 * @see _.dropWhile
1478 */
1479 dropWhile<TWhere>(
1480 predicate?: TWhere
1481 ): LoDashExplicitArrayWrapper<T>;
1482 }
1483
1484 interface LoDashExplicitObjectWrapper<T> {
1485 /**
1486 * @see _.dropWhile
1487 */
1488 dropWhile<TValue>(
1489 predicate?: ListIterator<TValue, boolean>
1490 ): LoDashExplicitArrayWrapper<TValue>;
1491
1492 /**
1493 * @see _.dropWhile
1494 */
1495 dropWhile<TValue>(
1496 predicate?: string
1497 ): LoDashExplicitArrayWrapper<TValue>;
1498
1499 /**
1500 * @see _.dropWhile
1501 */
1502 dropWhile<TWhere, TValue>(
1503 predicate?: TWhere
1504 ): LoDashExplicitArrayWrapper<TValue>;
1505 }
1506
1507 //_.fill
1508 interface LoDashStatic {
1509 /**
1510 * Fills elements of array with value from start up to, but not including, end.
1511 *
1512 * Note: This method mutates array.
1513 *
1514 * @param array The array to fill.
1515 * @param value The value to fill array with.
1516 * @param start The start position.
1517 * @param end The end position.
1518 * @return Returns array.
1519 */
1520 fill<T>(
1521 array: any[],
1522 value: T,
1523 start?: number,
1524 end?: number
1525 ): T[];
1526
1527 /**
1528 * @see _.fill
1529 */
1530 fill<T>(
1531 array: List<any>,
1532 value: T,
1533 start?: number,
1534 end?: number
1535 ): List<T>;
1536 }
1537
1538 interface LoDashImplicitArrayWrapper<T> {
1539 /**
1540 * @see _.fill
1541 */
1542 fill<T>(
1543 value: T,
1544 start?: number,
1545 end?: number
1546 ): LoDashImplicitArrayWrapper<T>;
1547 }
1548
1549 interface LoDashImplicitObjectWrapper<T> {
1550 /**
1551 * @see _.fill
1552 */
1553 fill<T>(
1554 value: T,
1555 start?: number,
1556 end?: number
1557 ): LoDashImplicitObjectWrapper<List<T>>;
1558 }
1559
1560 interface LoDashExplicitArrayWrapper<T> {
1561 /**
1562 * @see _.fill
1563 */
1564 fill<T>(
1565 value: T,
1566 start?: number,
1567 end?: number
1568 ): LoDashExplicitArrayWrapper<T>;
1569 }
1570
1571 interface LoDashExplicitObjectWrapper<T> {
1572 /**
1573 * @see _.fill
1574 */
1575 fill<T>(
1576 value: T,
1577 start?: number,
1578 end?: number
1579 ): LoDashExplicitObjectWrapper<List<T>>;
1580 }
1581
1582 //_.findIndex
1583 interface LoDashStatic {
1584 /**
1585 * This method is like _.find except that it returns the index of the first element predicate returns truthy
1586 * for instead of the element itself.
1587 *
1588 * If a property name is provided for predicate the created _.property style callback returns the property
1589 * value of the given element.
1590 *
1591 * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for
1592 * elements that have a matching property value, else false.
1593 *
1594 * If an object is provided for predicate the created _.matches style callback returns true for elements that
1595 * have the properties of the given object, else false.
1596 *
1597 * @param array The array to search.
1598 * @param predicate The function invoked per iteration.
1599 * @param fromIndex The index to search from.
1600 * @return Returns the index of the found element, else -1.
1601 */
1602 findIndex<T>(
1603 array: List<T>,
1604 predicate?: ListIterator<T, boolean>,
1605 fromIndex?: number
1606 ): number;
1607
1608 /**
1609 * @see _.findIndex
1610 */
1611 findIndex<T>(
1612 array: List<T>,
1613 predicate?: string,
1614 fromIndex?: number
1615 ): number;
1616
1617 /**
1618 * @see _.findIndex
1619 */
1620 findIndex<W, T>(
1621 array: List<T>,
1622 predicate?: W,
1623 fromIndex?: number
1624 ): number;
1625 }
1626
1627 interface LoDashImplicitArrayWrapper<T> {
1628 /**
1629 * @see _.findIndex
1630 */
1631 findIndex(
1632 predicate?: ListIterator<T, boolean>,
1633 fromIndex?: number
1634 ): number;
1635
1636 /**
1637 * @see _.findIndex
1638 */
1639 findIndex(
1640 predicate?: string,
1641 fromIndex?: number
1642 ): number;
1643
1644 /**
1645 * @see _.findIndex
1646 */
1647 findIndex<W>(
1648 predicate?: W,
1649 fromIndex?: number
1650 ): number;
1651 }
1652
1653 interface LoDashImplicitObjectWrapper<T> {
1654 /**
1655 * @see _.findIndex
1656 */
1657 findIndex<TResult>(
1658 predicate?: ListIterator<TResult, boolean>,
1659 fromIndex?: number
1660 ): number;
1661
1662 /**
1663 * @see _.findIndex
1664 */
1665 findIndex(
1666 predicate?: string,
1667 fromIndex?: number
1668 ): number;
1669
1670 /**
1671 * @see _.findIndex
1672 */
1673 findIndex<W>(
1674 predicate?: W,
1675 fromIndex?: number
1676 ): number;
1677 }
1678
1679 interface LoDashExplicitArrayWrapper<T> {
1680 /**
1681 * @see _.findIndex
1682 */
1683 findIndex(
1684 predicate?: ListIterator<T, boolean>,
1685 fromIndex?: number
1686 ): LoDashExplicitWrapper<number>;
1687
1688 /**
1689 * @see _.findIndex
1690 */
1691 findIndex(
1692 predicate?: string,
1693 fromIndex?: number
1694 ): LoDashExplicitWrapper<number>;
1695
1696 /**
1697 * @see _.findIndex
1698 */
1699 findIndex<W>(
1700 predicate?: W,
1701 fromIndex?: number
1702 ): LoDashExplicitWrapper<number>;
1703 }
1704
1705 interface LoDashExplicitObjectWrapper<T> {
1706 /**
1707 * @see _.findIndex
1708 */
1709 findIndex<TResult>(
1710 predicate?: ListIterator<TResult, boolean>,
1711 fromIndex?: number
1712 ): LoDashExplicitWrapper<number>;
1713
1714 /**
1715 * @see _.findIndex
1716 */
1717 findIndex(
1718 predicate?: string,
1719 fromIndex?: number
1720 ): LoDashExplicitWrapper<number>;
1721
1722 /**
1723 * @see _.findIndex
1724 */
1725 findIndex<W>(
1726 predicate?: W,
1727 fromIndex?: number
1728 ): LoDashExplicitWrapper<number>;
1729 }
1730
1731 //_.findLastIndex
1732 interface LoDashStatic {
1733 /**
1734 * This method is like _.findIndex except that it iterates over elements of collection from right to left.
1735 *
1736 * If a property name is provided for predicate the created _.property style callback returns the property
1737 * value of the given element.
1738 *
1739 * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for
1740 * elements that have a matching property value, else false.
1741 *
1742 * If an object is provided for predicate the created _.matches style callback returns true for elements that
1743 * have the properties of the given object, else false.
1744 *
1745 * @param array The array to search.
1746 * @param predicate The function invoked per iteration.
1747 * @param fromIndex The index to search from.
1748 * @return Returns the index of the found element, else -1.
1749 */
1750 findLastIndex<T>(
1751 array: List<T>,
1752 predicate?: ListIterator<T, boolean>,
1753 fromIndex?: number
1754 ): number;
1755
1756 /**
1757 * @see _.findLastIndex
1758 */
1759 findLastIndex<T>(
1760 array: List<T>,
1761 predicate?: string,
1762 fromIndex?: number
1763 ): number;
1764
1765 /**
1766 * @see _.findLastIndex
1767 */
1768 findLastIndex<W, T>(
1769 array: List<T>,
1770 predicate?: W,
1771 fromIndex?: number
1772 ): number;
1773 }
1774
1775 interface LoDashImplicitArrayWrapper<T> {
1776 /**
1777 * @see _.findLastIndex
1778 */
1779 findLastIndex(
1780 predicate?: ListIterator<T, boolean>,
1781 fromIndex?: number
1782 ): number;
1783
1784 /**
1785 * @see _.findLastIndex
1786 */
1787 findLastIndex(
1788 predicate?: string,
1789 fromIndex?: number
1790 ): number;
1791
1792 /**
1793 * @see _.findLastIndex
1794 */
1795 findLastIndex<W>(
1796 predicate?: W,
1797 fromIndex?: number
1798 ): number;
1799 }
1800
1801 interface LoDashImplicitObjectWrapper<T> {
1802 /**
1803 * @see _.findLastIndex
1804 */
1805 findLastIndex<TResult>(
1806 predicate?: ListIterator<TResult, boolean>,
1807 fromIndex?: number
1808 ): number;
1809
1810 /**
1811 * @see _.findLastIndex
1812 */
1813 findLastIndex(
1814 predicate?: string,
1815 fromIndex?: number
1816 ): number;
1817
1818 /**
1819 * @see _.findLastIndex
1820 */
1821 findLastIndex<W>(
1822 predicate?: W,
1823 fromIndex?: number
1824 ): number;
1825 }
1826
1827 interface LoDashExplicitArrayWrapper<T> {
1828 /**
1829 * @see _.findLastIndex
1830 */
1831 findLastIndex(
1832 predicate?: ListIterator<T, boolean>,
1833 fromIndex?: number
1834 ): LoDashExplicitWrapper<number>;
1835
1836 /**
1837 * @see _.findLastIndex
1838 */
1839 findLastIndex(
1840 predicate?: string,
1841 fromIndex?: number
1842 ): LoDashExplicitWrapper<number>;
1843
1844 /**
1845 * @see _.findLastIndex
1846 */
1847 findLastIndex<W>(
1848 predicate?: W,
1849 fromIndex?: number
1850 ): LoDashExplicitWrapper<number>;
1851 }
1852
1853 interface LoDashExplicitObjectWrapper<T> {
1854 /**
1855 * @see _.findLastIndex
1856 */
1857 findLastIndex<TResult>(
1858 predicate?: ListIterator<TResult, boolean>,
1859 fromIndex?: number
1860 ): LoDashExplicitWrapper<number>;
1861
1862 /**
1863 * @see _.findLastIndex
1864 */
1865 findLastIndex(
1866 predicate?: string,
1867 fromIndex?: number
1868 ): LoDashExplicitWrapper<number>;
1869
1870 /**
1871 * @see _.findLastIndex
1872 */
1873 findLastIndex<W>(
1874 predicate?: W,
1875 fromIndex?: number
1876 ): LoDashExplicitWrapper<number>;
1877 }
1878
1879 //_.first
1880 interface LoDashStatic {
1881 /**
1882 * @see _.head
1883 */
1884 first<T>(array: List<T>): T;
1885 }
1886
1887 interface LoDashImplicitWrapper<T> {
1888 /**
1889 * @see _.head
1890 */
1891 first(): string;
1892 }
1893
1894 interface LoDashImplicitArrayWrapper<T> {
1895 /**
1896 * @see _.head
1897 */
1898 first(): T;
1899 }
1900
1901 interface LoDashImplicitObjectWrapper<T> {
1902 /**
1903 * @see _.head
1904 */
1905 first<T>(): T;
1906 }
1907
1908 interface LoDashExplicitWrapper<T> {
1909 /**
1910 * @see _.head
1911 */
1912 first(): LoDashExplicitWrapper<string>;
1913 }
1914
1915 interface LoDashExplicitArrayWrapper<T> {
1916 /**
1917 * @see _.head
1918 */
1919 first<T>(): T;
1920 }
1921
1922 interface LoDashExplicitObjectWrapper<T> {
1923 /**
1924 * @see _.head
1925 */
1926 first<T>(): T;
1927 }
1928
1929 interface RecursiveArray<T> extends Array<T|RecursiveArray<T>> {}
1930 interface ListOfRecursiveArraysOrValues<T> extends List<T|RecursiveArray<T>> {}
1931
1932 //_.flatten
1933 interface LoDashStatic {
1934 /**
1935 * Flattens a nested array. If isDeep is true the array is recursively flattened, otherwise it’s only
1936 * flattened a single level.
1937 *
1938 * @param array The array to flatten.
1939 * @param isDeep Specify a deep flatten.
1940 * @return Returns the new flattened array.
1941 */
1942 flatten<T>(array: ListOfRecursiveArraysOrValues<T>, isDeep: boolean): T[];
1943
1944 /**
1945 * @see _.flatten
1946 */
1947 flatten<T>(array: List<Many<T>>): T[];
1948
1949 /**
1950 * @see _.flatten
1951 */
1952 flatten<T>(array: ListOfRecursiveArraysOrValues<T>): RecursiveArray<T>;
1953 }
1954
1955 interface LoDashImplicitWrapper<T> {
1956 /**
1957 * @see _.flatten
1958 */
1959 flatten(): LoDashImplicitArrayWrapper<string>;
1960 }
1961
1962 interface LoDashImplicitArrayWrapper<T> {
1963 /**
1964 * @see _.flatten
1965 */
1966 flatten<TResult>(isDeep?: boolean): LoDashImplicitArrayWrapper<TResult>;
1967 }
1968
1969 interface LoDashImplicitObjectWrapper<T> {
1970 /**
1971 * @see _.flatten
1972 */
1973 flatten<TResult>(isDeep?: boolean): LoDashImplicitArrayWrapper<TResult>;
1974 }
1975
1976 interface LoDashExplicitWrapper<T> {
1977 /**
1978 * @see _.flatten
1979 */
1980 flatten(): LoDashExplicitArrayWrapper<string>;
1981 }
1982
1983 interface LoDashExplicitArrayWrapper<T> {
1984 /**
1985 * @see _.flatten
1986 */
1987 flatten<TResult>(isDeep?: boolean): LoDashExplicitArrayWrapper<TResult>;
1988 }
1989
1990 interface LoDashExplicitObjectWrapper<T> {
1991 /**
1992 * @see _.flatten
1993 */
1994 flatten<TResult>(isDeep?: boolean): LoDashExplicitArrayWrapper<TResult>;
1995 }
1996
1997 //_.flattenDeep
1998 interface LoDashStatic {
1999 /**
2000 * Recursively flattens a nested array.
2001 *
2002 * @param array The array to recursively flatten.
2003 * @return Returns the new flattened array.
2004 */
2005 flattenDeep<T>(array: ListOfRecursiveArraysOrValues<T>): T[];
2006 }
2007
2008 interface LoDashImplicitWrapper<T> {
2009 /**
2010 * @see _.flattenDeep
2011 */
2012 flattenDeep(): LoDashImplicitArrayWrapper<string>;
2013 }
2014
2015 interface LoDashImplicitArrayWrapper<T> {
2016 /**
2017 * @see _.flattenDeep
2018 */
2019 flattenDeep<T>(): LoDashImplicitArrayWrapper<T>;
2020 }
2021
2022 interface LoDashImplicitObjectWrapper<T> {
2023 /**
2024 * @see _.flattenDeep
2025 */
2026 flattenDeep<T>(): LoDashImplicitArrayWrapper<T>;
2027 }
2028
2029 interface LoDashExplicitWrapper<T> {
2030 /**
2031 * @see _.flattenDeep
2032 */
2033 flattenDeep(): LoDashExplicitArrayWrapper<string>;
2034 }
2035
2036 interface LoDashExplicitArrayWrapper<T> {
2037 /**
2038 * @see _.flattenDeep
2039 */
2040 flattenDeep<T>(): LoDashExplicitArrayWrapper<T>;
2041 }
2042
2043 interface LoDashExplicitObjectWrapper<T> {
2044 /**
2045 * @see _.flattenDeep
2046 */
2047 flattenDeep<T>(): LoDashExplicitArrayWrapper<T>;
2048 }
2049
2050 // _.flattenDepth
2051 interface LoDashStatic {
2052 /**
2053 * Recursively flatten array up to depth times.
2054 *
2055 * @param array The array to recursively flatten.
2056 * @param number The maximum recursion depth.
2057 * @return Returns the new flattened array.
2058 */
2059 flattenDepth<T>(array: ListOfRecursiveArraysOrValues<T>, depth?: number): T[];
2060 }
2061
2062 //_.fromPairs
2063 interface LoDashStatic {
2064 /**
2065 * The inverse of `_.toPairs`; this method returns an object composed
2066 * from key-value `pairs`.
2067 *
2068 * @static
2069 * @memberOf _
2070 * @category Array
2071 * @param {Array} pairs The key-value pairs.
2072 * @returns {Object} Returns the new object.
2073 * @example
2074 *
2075 * _.fromPairs([['fred', 30], ['barney', 40]]);
2076 * // => { 'fred': 30, 'barney': 40 }
2077 */
2078 fromPairs<T>(
2079 array: List<[_.StringRepresentable, T]>
2080 ): Dictionary<T>;
2081
2082 /**
2083 @see _.fromPairs
2084 */
2085 fromPairs(
2086 array: List<any[]>
2087 ): Dictionary<any>;
2088 }
2089
2090 //_.fromPairs DUMMY
2091 interface LoDashImplicitArrayWrapper<T> {
2092 /**
2093 * @see _.fromPairs
2094 */
2095 fromPairs(): LoDashImplicitObjectWrapper<any>;
2096 }
2097
2098 //_.fromPairs DUMMY
2099 interface LoDashExplicitArrayWrapper<T> {
2100 /**
2101 * @see _.fromPairs
2102 */
2103 fromPairs(): LoDashExplicitObjectWrapper<any>;
2104 }
2105
2106 //_.head
2107 interface LoDashStatic {
2108 /**
2109 * Gets the first element of array.
2110 *
2111 * @alias _.first
2112 *
2113 * @param array The array to query.
2114 * @return Returns the first element of array.
2115 */
2116 head<T>(array: List<T>): T;
2117 }
2118
2119 interface LoDashImplicitWrapper<T> {
2120 /**
2121 * @see _.head
2122 */
2123 head(): string;
2124 }
2125
2126 interface LoDashImplicitArrayWrapper<T> {
2127 /**
2128 * @see _.head
2129 */
2130 head(): T;
2131 }
2132
2133 interface LoDashImplicitObjectWrapper<T> {
2134 /**
2135 * @see _.head
2136 */
2137 head<T>(): T;
2138 }
2139
2140 interface LoDashExplicitWrapper<T> {
2141 /**
2142 * @see _.head
2143 */
2144 head(): LoDashExplicitWrapper<string>;
2145 }
2146
2147 interface LoDashExplicitArrayWrapper<T> {
2148 /**
2149 * @see _.head
2150 */
2151 head<T>(): T;
2152 }
2153
2154 interface LoDashExplicitObjectWrapper<T> {
2155 /**
2156 * @see _.head
2157 */
2158 head<T>(): T;
2159 }
2160
2161 //_.indexOf
2162 interface LoDashStatic {
2163 /**
2164 * Gets the index at which the first occurrence of `value` is found in `array`
2165 * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
2166 * for equality comparisons. If `fromIndex` is negative, it's used as the offset
2167 * from the end of `array`. If `array` is sorted providing `true` for `fromIndex`
2168 * performs a faster binary search.
2169 *
2170 * @static
2171 * @memberOf _
2172 * @category Array
2173 * @param {Array} array The array to search.
2174 * @param {*} value The value to search for.
2175 * @param {number} [fromIndex=0] The index to search from.
2176 * @returns {number} Returns the index of the matched value, else `-1`.
2177 * @example
2178 *
2179 * _.indexOf([1, 2, 1, 2], 2);
2180 * // => 1
2181 *
2182 * // using `fromIndex`
2183 * _.indexOf([1, 2, 1, 2], 2, 2);
2184 * // => 3
2185 */
2186 indexOf<T>(
2187 array: List<T>,
2188 value: T,
2189 fromIndex?: boolean|number
2190 ): number;
2191 }
2192
2193 interface LoDashImplicitArrayWrapper<T> {
2194 /**
2195 * @see _.indexOf
2196 */
2197 indexOf(
2198 value: T,
2199 fromIndex?: boolean|number
2200 ): number;
2201 }
2202
2203 interface LoDashImplicitObjectWrapper<T> {
2204 /**
2205 * @see _.indexOf
2206 */
2207 indexOf<TValue>(
2208 value: TValue,
2209 fromIndex?: boolean|number
2210 ): number;
2211 }
2212
2213 interface LoDashExplicitArrayWrapper<T> {
2214 /**
2215 * @see _.indexOf
2216 */
2217 indexOf(
2218 value: T,
2219 fromIndex?: boolean|number
2220 ): LoDashExplicitWrapper<number>;
2221 }
2222
2223 interface LoDashExplicitObjectWrapper<T> {
2224 /**
2225 * @see _.indexOf
2226 */
2227 indexOf<TValue>(
2228 value: TValue,
2229 fromIndex?: boolean|number
2230 ): LoDashExplicitWrapper<number>;
2231 }
2232
2233 //_.intersectionBy DUMMY
2234 interface LoDashStatic {
2235 /**
2236 * This method is like `_.intersection` except that it accepts `iteratee`
2237 * which is invoked for each element of each `arrays` to generate the criterion
2238 * by which uniqueness is computed. The iteratee is invoked with one argument: (value).
2239 *
2240 * @static
2241 * @memberOf _
2242 * @category Array
2243 * @param {...Array} [arrays] The arrays to inspect.
2244 * @param {Function|Object|string} [iteratee=_.identity] The iteratee invoked per element.
2245 * @returns {Array} Returns the new array of shared values.
2246 * @example
2247 *
2248 * _.intersectionBy([2.1, 1.2], [4.3, 2.4], Math.floor);
2249 * // => [2.1]
2250 *
2251 * // using the `_.property` iteratee shorthand
2252 * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
2253 * // => [{ 'x': 1 }]
2254 */
2255 intersectionBy(
2256 array: List<any>,
2257 ...values: any[]
2258 ): any[];
2259 }
2260
2261 //_.intersectionWith DUMMY
2262 interface LoDashStatic {
2263 /**
2264 * This method is like `_.intersection` except that it accepts `comparator`
2265 * which is invoked to compare elements of `arrays`. The comparator is invoked
2266 * with two arguments: (arrVal, othVal).
2267 *
2268 * @static
2269 * @memberOf _
2270 * @category Array
2271 * @param {...Array} [arrays] The arrays to inspect.
2272 * @param {Function} [comparator] The comparator invoked per element.
2273 * @returns {Array} Returns the new array of shared values.
2274 * @example
2275 *
2276 * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
2277 * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
2278 *
2279 * _.intersectionWith(objects, others, _.isEqual);
2280 * // => [{ 'x': 1, 'y': 2 }]
2281 */
2282 intersectionWith(
2283 array: List<any>,
2284 ...values: any[]
2285 ): any[];
2286 }
2287
2288 //_.join
2289 interface LoDashStatic {
2290 /**
2291 * Converts all elements in `array` into a string separated by `separator`.
2292 *
2293 * @param array The array to convert.
2294 * @param separator The element separator.
2295 * @returns Returns the joined string.
2296 */
2297 join(
2298 array: List<any>,
2299 separator?: string
2300 ): string;
2301 }
2302
2303 interface LoDashImplicitWrapper<T> {
2304 /**
2305 * @see _.join
2306 */
2307 join(separator?: string): string;
2308 }
2309
2310 interface LoDashImplicitArrayWrapper<T> {
2311 /**
2312 * @see _.join
2313 */
2314 join(separator?: string): string;
2315 }
2316
2317 interface LoDashImplicitObjectWrapper<T> {
2318 /**
2319 * @see _.join
2320 */
2321 join(separator?: string): string;
2322 }
2323
2324 interface LoDashExplicitWrapper<T> {
2325 /**
2326 * @see _.join
2327 */
2328 join(separator?: string): LoDashExplicitWrapper<string>;
2329 }
2330
2331 interface LoDashExplicitArrayWrapper<T> {
2332 /**
2333 * @see _.join
2334 */
2335 join(separator?: string): LoDashExplicitWrapper<string>;
2336 }
2337
2338 interface LoDashExplicitObjectWrapper<T> {
2339 /**
2340 * @see _.join
2341 */
2342 join(separator?: string): LoDashExplicitWrapper<string>;
2343 }
2344
2345 //_.pullAll DUMMY
2346 interface LoDashStatic {
2347 /**
2348 * This method is like `_.pull` except that it accepts an array of values to remove.
2349 *
2350 * **Note:** Unlike `_.difference`, this method mutates `array`.
2351 *
2352 * @static
2353 * @memberOf _
2354 * @category Array
2355 * @param {Array} array The array to modify.
2356 * @param {Array} values The values to remove.
2357 * @returns {Array} Returns `array`.
2358 * @example
2359 *
2360 * var array = [1, 2, 3, 1, 2, 3];
2361 *
2362 * _.pull(array, [2, 3]);
2363 * console.log(array);
2364 * // => [1, 1]
2365 */
2366 pullAll(
2367 array: List<any>,
2368 ...values: any[]
2369 ): any[];
2370 }
2371
2372 //_.pullAllBy DUMMY
2373 interface LoDashStatic {
2374 /**
2375 * This method is like `_.pullAll` except that it accepts `iteratee` which is
2376 * invoked for each element of `array` and `values` to to generate the criterion
2377 * by which uniqueness is computed. The iteratee is invoked with one argument: (value).
2378 *
2379 * **Note:** Unlike `_.differenceBy`, this method mutates `array`.
2380 *
2381 * @static
2382 * @memberOf _
2383 * @category Array
2384 * @param {Array} array The array to modify.
2385 * @param {Array} values The values to remove.
2386 * @param {Function|Object|string} [iteratee=_.identity] The iteratee invoked per element.
2387 * @returns {Array} Returns `array`.
2388 * @example
2389 *
2390 * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];
2391 *
2392 * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');
2393 * console.log(array);
2394 * // => [{ 'x': 2 }]
2395 */
2396 pullAllBy(
2397 array: List<any>,
2398 ...values: any[]
2399 ): any[];
2400 }
2401
2402 //_.reverse DUMMY
2403 interface LoDashStatic {
2404 /**
2405 * Reverses `array` so that the first element becomes the last, the second
2406 * element becomes the second to last, and so on.
2407 *
2408 * **Note:** This method mutates `array` and is based on
2409 * [`Array#reverse`](https://mdn.io/Array/reverse).
2410 *
2411 * @memberOf _
2412 * @category Array
2413 * @returns {Array} Returns `array`.
2414 * @example
2415 *
2416 * var array = [1, 2, 3];
2417 *
2418 * _.reverse(array);
2419 * // => [3, 2, 1]
2420 *
2421 * console.log(array);
2422 * // => [3, 2, 1]
2423 */
2424 reverse(
2425 array: List<any>,
2426 ...values: any[]
2427 ): any[];
2428 }
2429
2430 //_.sortedIndexOf
2431 interface LoDashStatic {
2432 /**
2433 * This method is like `_.indexOf` except that it performs a binary
2434 * search on a sorted `array`.
2435 *
2436 * @static
2437 * @memberOf _
2438 * @category Array
2439 * @param {Array} array The array to search.
2440 * @param {*} value The value to search for.
2441 * @returns {number} Returns the index of the matched value, else `-1`.
2442 * @example
2443 *
2444 * _.sortedIndexOf([1, 1, 2, 2], 2);
2445 * // => 2
2446 */
2447 sortedIndexOf<T>(
2448 array: List<T>,
2449 value: T
2450 ): number;
2451 }
2452
2453 interface LoDashImplicitArrayWrapper<T> {
2454 /**
2455 * @see _.sortedIndexOf
2456 */
2457 sortedIndexOf(
2458 value: T
2459 ): number;
2460 }
2461
2462 interface LoDashImplicitObjectWrapper<T> {
2463 /**
2464 * @see _.sortedIndexOf
2465 */
2466 sortedIndexOf<TValue>(
2467 value: TValue
2468 ): number;
2469 }
2470
2471 interface LoDashExplicitArrayWrapper<T> {
2472 /**
2473 * @see _.sortedIndexOf
2474 */
2475 sortedIndexOf(
2476 value: T
2477 ): LoDashExplicitWrapper<number>;
2478 }
2479
2480 interface LoDashExplicitObjectWrapper<T> {
2481 /**
2482 * @see _.sortedIndexOf
2483 */
2484 sortedIndexOf<TValue>(
2485 value: TValue
2486 ): LoDashExplicitWrapper<number>;
2487 }
2488
2489 //_.initial
2490 interface LoDashStatic {
2491 /**
2492 * Gets all but the last element of array.
2493 *
2494 * @param array The array to query.
2495 * @return Returns the slice of array.
2496 */
2497 initial<T>(array: List<T>): T[];
2498 }
2499
2500 interface LoDashImplicitArrayWrapper<T> {
2501 /**
2502 * @see _.initial
2503 */
2504 initial(): LoDashImplicitArrayWrapper<T>;
2505 }
2506
2507 interface LoDashImplicitObjectWrapper<T> {
2508 /**
2509 * @see _.initial
2510 */
2511 initial<T>(): LoDashImplicitArrayWrapper<T>;
2512 }
2513
2514 interface LoDashExplicitArrayWrapper<T> {
2515 /**
2516 * @see _.initial
2517 */
2518 initial(): LoDashExplicitArrayWrapper<T>;
2519 }
2520
2521 interface LoDashExplicitObjectWrapper<T> {
2522 /**
2523 * @see _.initial
2524 */
2525 initial<T>(): LoDashExplicitArrayWrapper<T>;
2526 }
2527
2528 //_.intersection
2529 interface LoDashStatic {
2530 /**
2531 * Creates an array of unique values that are included in all of the provided arrays using SameValueZero for
2532 * equality comparisons.
2533 *
2534 * @param arrays The arrays to inspect.
2535 * @return Returns the new array of shared values.
2536 */
2537 intersection<T>(...arrays: Array<List<T>>): T[];
2538 }
2539
2540 interface LoDashImplicitArrayWrapper<T> {
2541 /**
2542 * @see _.intersection
2543 */
2544 intersection<TResult>(...arrays: Array<List<TResult>>): LoDashImplicitArrayWrapper<TResult>;
2545 }
2546
2547 interface LoDashImplicitObjectWrapper<T> {
2548 /**
2549 * @see _.intersection
2550 */
2551 intersection<TResult>(...arrays: Array<List<TResult>>): LoDashImplicitArrayWrapper<TResult>;
2552 }
2553
2554 interface LoDashExplicitArrayWrapper<T> {
2555 /**
2556 * @see _.intersection
2557 */
2558 intersection<TResult>(...arrays: Array<List<TResult>>): LoDashExplicitArrayWrapper<TResult>;
2559 }
2560
2561 interface LoDashExplicitObjectWrapper<T> {
2562 /**
2563 * @see _.intersection
2564 */
2565 intersection<TResult>(...arrays: Array<List<TResult>>): LoDashExplicitArrayWrapper<TResult>;
2566 }
2567
2568 //_.last
2569 interface LoDashStatic {
2570 /**
2571 * Gets the last element of array.
2572 *
2573 * @param array The array to query.
2574 * @return Returns the last element of array.
2575 */
2576 last<T>(array: List<T>): T;
2577 }
2578
2579 interface LoDashImplicitWrapper<T> {
2580 /**
2581 * @see _.last
2582 */
2583 last(): string;
2584 }
2585
2586 interface LoDashImplicitArrayWrapper<T> {
2587 /**
2588 * @see _.last
2589 */
2590 last(): T;
2591 }
2592
2593 interface LoDashImplicitObjectWrapper<T> {
2594 /**
2595 * @see _.last
2596 */
2597 last<T>(): T;
2598 }
2599
2600 interface LoDashExplicitWrapper<T> {
2601 /**
2602 * @see _.last
2603 */
2604 last(): LoDashExplicitWrapper<string>;
2605 }
2606
2607 interface LoDashExplicitArrayWrapper<T> {
2608 /**
2609 * @see _.last
2610 */
2611 last<T>(): T;
2612 }
2613
2614 interface LoDashExplicitObjectWrapper<T> {
2615 /**
2616 * @see _.last
2617 */
2618 last<T>(): T;
2619 }
2620
2621 //_.lastIndexOf
2622 interface LoDashStatic {
2623 /**
2624 * This method is like _.indexOf except that it iterates over elements of array from right to left.
2625 *
2626 * @param array The array to search.
2627 * @param value The value to search for.
2628 * @param fromIndex The index to search from or true to perform a binary search on a sorted array.
2629 * @return Returns the index of the matched value, else -1.
2630 */
2631 lastIndexOf<T>(
2632 array: List<T>,
2633 value: T,
2634 fromIndex?: boolean|number
2635 ): number;
2636 }
2637
2638 interface LoDashImplicitArrayWrapper<T> {
2639 /**
2640 * @see _.lastIndexOf
2641 */
2642 lastIndexOf(
2643 value: T,
2644 fromIndex?: boolean|number
2645 ): number;
2646 }
2647
2648 interface LoDashImplicitObjectWrapper<T> {
2649 /**
2650 * @see _.lastIndexOf
2651 */
2652 lastIndexOf<TResult>(
2653 value: TResult,
2654 fromIndex?: boolean|number
2655 ): number;
2656 }
2657
2658 interface LoDashExplicitArrayWrapper<T> {
2659 /**
2660 * @see _.lastIndexOf
2661 */
2662 lastIndexOf(
2663 value: T,
2664 fromIndex?: boolean|number
2665 ): LoDashExplicitWrapper<number>;
2666 }
2667
2668 interface LoDashExplicitObjectWrapper<T> {
2669 /**
2670 * @see _.lastIndexOf
2671 */
2672 lastIndexOf<TResult>(
2673 value: TResult,
2674 fromIndex?: boolean|number
2675 ): LoDashExplicitWrapper<number>;
2676 }
2677
2678 //_.nth
2679 interface LoDashStatic {
2680 /**
2681 * Gets the element at index `n` of `array`. If `n` is negative, the nth element from the end is returned.
2682 *
2683 * @param array array The array to query.
2684 * @param value The index of the element to return.
2685 * @return Returns the nth element of `array`.
2686 */
2687 nth<T>(
2688 array: List<T>,
2689 n?: number
2690 ): T;
2691 }
2692
2693 interface LoDashImplicitArrayWrapper<T> {
2694 /**
2695 * @see _.nth
2696 */
2697 nth(
2698 n?: number
2699 ): T;
2700 }
2701
2702 interface LoDashImplicitObjectWrapper<T> {
2703 /**
2704 * @see _.nth
2705 */
2706 nth<TResult>(
2707 n?:number
2708 ): TResult;
2709 }
2710
2711 interface LoDashExplicitArrayWrapper<T> {
2712 /**
2713 * @see _.nth
2714 */
2715 nth(
2716 n?:number
2717 ): LoDashExplicitWrapper<T>;
2718 }
2719
2720 interface LoDashExplicitObjectWrapper<T> {
2721 /**
2722 * @see _.nth
2723 */
2724 nth<TResult>(
2725 n?:number
2726 ): LoDashExplicitWrapper<TResult>;
2727 }
2728
2729 //_.pull
2730 interface LoDashStatic {
2731 /**
2732 * Removes all provided values from array using SameValueZero for equality comparisons.
2733 *
2734 * Note: Unlike _.without, this method mutates array.
2735 *
2736 * @param array The array to modify.
2737 * @param values The values to remove.
2738 * @return Returns array.
2739 */
2740 pull<T>(
2741 array: T[],
2742 ...values: T[]
2743 ): T[];
2744
2745 /**
2746 * @see _.pull
2747 */
2748 pull<T>(
2749 array: List<T>,
2750 ...values: T[]
2751 ): List<T>;
2752 }
2753
2754 interface LoDashImplicitArrayWrapper<T> {
2755 /**
2756 * @see _.pull
2757 */
2758 pull(...values: T[]): LoDashImplicitArrayWrapper<T>;
2759 }
2760
2761 interface LoDashImplicitObjectWrapper<T> {
2762 /**
2763 * @see _.pull
2764 */
2765 pull<TValue>(...values: TValue[]): LoDashImplicitObjectWrapper<List<TValue>>;
2766 }
2767
2768 interface LoDashExplicitArrayWrapper<T> {
2769 /**
2770 * @see _.pull
2771 */
2772 pull(...values: T[]): LoDashExplicitArrayWrapper<T>;
2773 }
2774
2775 interface LoDashExplicitObjectWrapper<T> {
2776 /**
2777 * @see _.pull
2778 */
2779 pull<TValue>(...values: TValue[]): LoDashExplicitObjectWrapper<List<TValue>>;
2780 }
2781
2782 //_.pullAt
2783 interface LoDashStatic {
2784 /**
2785 * Removes elements from array corresponding to the given indexes and returns an array of the removed elements.
2786 * Indexes may be specified as an array of indexes or as individual arguments.
2787 *
2788 * Note: Unlike _.at, this method mutates array.
2789 *
2790 * @param array The array to modify.
2791 * @param indexes The indexes of elements to remove, specified as individual indexes or arrays of indexes.
2792 * @return Returns the new array of removed elements.
2793 */
2794 pullAt<T>(
2795 array: List<T>,
2796 ...indexes: Array<Many<number>>
2797 ): T[];
2798 }
2799
2800 interface LoDashImplicitArrayWrapper<T> {
2801 /**
2802 * @see _.pullAt
2803 */
2804 pullAt(...indexes: Array<Many<number>>): LoDashImplicitArrayWrapper<T>;
2805 }
2806
2807 interface LoDashImplicitObjectWrapper<T> {
2808 /**
2809 * @see _.pullAt
2810 */
2811 pullAt<T>(...indexes: Array<Many<number>>): LoDashImplicitArrayWrapper<T>;
2812 }
2813
2814 interface LoDashExplicitArrayWrapper<T> {
2815 /**
2816 * @see _.pullAt
2817 */
2818 pullAt(...indexes: Array<Many<number>>): LoDashExplicitArrayWrapper<T>;
2819 }
2820
2821 interface LoDashExplicitObjectWrapper<T> {
2822 /**
2823 * @see _.pullAt
2824 */
2825 pullAt<T>(...indexes: Array<Many<number>>): LoDashExplicitArrayWrapper<T>;
2826 }
2827
2828 //_.remove
2829 interface LoDashStatic {
2830 /**
2831 * Removes all elements from array that predicate returns truthy for and returns an array of the removed
2832 * elements. The predicate is bound to thisArg and invoked with three arguments: (value, index, array).
2833 *
2834 * If a property name is provided for predicate the created _.property style callback returns the property
2835 * value of the given element.
2836 *
2837 * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for
2838 * elements that have a matching property value, else false.
2839 *
2840 * If an object is provided for predicate the created _.matches style callback returns true for elements that
2841 * have the properties of the given object, else false.
2842 *
2843 * Note: Unlike _.filter, this method mutates array.
2844 *
2845 * @param array The array to modify.
2846 * @param predicate The function invoked per iteration.
2847 * @param thisArg The this binding of predicate.
2848 * @return Returns the new array of removed elements.
2849 */
2850 remove<T>(
2851 array: List<T>,
2852 predicate?: ListIterator<T, boolean>
2853 ): T[];
2854
2855 /**
2856 * @see _.remove
2857 */
2858 remove<T>(
2859 array: List<T>,
2860 predicate?: string
2861 ): T[];
2862
2863 /**
2864 * @see _.remove
2865 */
2866 remove<W, T>(
2867 array: List<T>,
2868 predicate?: W
2869 ): T[];
2870 }
2871
2872 interface LoDashImplicitArrayWrapper<T> {
2873 /**
2874 * @see _.remove
2875 */
2876 remove(
2877 predicate?: ListIterator<T, boolean>
2878 ): LoDashImplicitArrayWrapper<T>;
2879
2880 /**
2881 * @see _.remove
2882 */
2883 remove(
2884 predicate?: string
2885 ): LoDashImplicitArrayWrapper<T>;
2886
2887 /**
2888 * @see _.remove
2889 */
2890 remove<W>(
2891 predicate?: W
2892 ): LoDashImplicitArrayWrapper<T>;
2893 }
2894
2895 interface LoDashImplicitObjectWrapper<T> {
2896 /**
2897 * @see _.remove
2898 */
2899 remove<TResult>(
2900 predicate?: ListIterator<TResult, boolean>
2901 ): LoDashImplicitArrayWrapper<TResult>;
2902
2903 /**
2904 * @see _.remove
2905 */
2906 remove<TResult>(
2907 predicate?: string
2908 ): LoDashImplicitArrayWrapper<TResult>;
2909
2910 /**
2911 * @see _.remove
2912 */
2913 remove<W, TResult>(
2914 predicate?: W
2915 ): LoDashImplicitArrayWrapper<TResult>;
2916 }
2917
2918 interface LoDashExplicitArrayWrapper<T> {
2919 /**
2920 * @see _.remove
2921 */
2922 remove(
2923 predicate?: ListIterator<T, boolean>
2924 ): LoDashExplicitArrayWrapper<T>;
2925
2926 /**
2927 * @see _.remove
2928 */
2929 remove(
2930 predicate?: string
2931 ): LoDashExplicitArrayWrapper<T>;
2932
2933 /**
2934 * @see _.remove
2935 */
2936 remove<W>(
2937 predicate?: W
2938 ): LoDashExplicitArrayWrapper<T>;
2939 }
2940
2941 interface LoDashExplicitObjectWrapper<T> {
2942 /**
2943 * @see _.remove
2944 */
2945 remove<TResult>(
2946 predicate?: ListIterator<TResult, boolean>
2947 ): LoDashExplicitArrayWrapper<TResult>;
2948
2949 /**
2950 * @see _.remove
2951 */
2952 remove<TResult>(
2953 predicate?: string
2954 ): LoDashExplicitArrayWrapper<TResult>;
2955
2956 /**
2957 * @see _.remove
2958 */
2959 remove<W, TResult>(
2960 predicate?: W
2961 ): LoDashExplicitArrayWrapper<TResult>;
2962 }
2963
2964 //_.tail
2965 interface LoDashStatic {
2966 /**
2967 * Gets all but the first element of array.
2968 *
2969 * @alias _.tail
2970 *
2971 * @param array The array to query.
2972 * @return Returns the slice of array.
2973 */
2974 tail<T>(array: List<T>): T[];
2975 }
2976
2977 interface LoDashImplicitArrayWrapper<T> {
2978 /**
2979 * @see _.tail
2980 */
2981 tail(): LoDashImplicitArrayWrapper<T>;
2982 }
2983
2984 interface LoDashImplicitObjectWrapper<T> {
2985 /**
2986 * @see _.tail
2987 */
2988 tail<T>(): LoDashImplicitArrayWrapper<T>;
2989 }
2990
2991 interface LoDashExplicitArrayWrapper<T> {
2992 /**
2993 * @see _.tail
2994 */
2995 tail(): LoDashExplicitArrayWrapper<T>;
2996 }
2997
2998 interface LoDashExplicitObjectWrapper<T> {
2999 /**
3000 * @see _.tail
3001 */
3002 tail<T>(): LoDashExplicitArrayWrapper<T>;
3003 }
3004
3005 //_.slice
3006 interface LoDashStatic {
3007 /**
3008 * Creates a slice of array from start up to, but not including, end.
3009 *
3010 * @param array The array to slice.
3011 * @param start The start position.
3012 * @param end The end position.
3013 * @return Returns the slice of array.
3014 */
3015 slice<T>(
3016 array: T[],
3017 start?: number,
3018 end?: number
3019 ): T[];
3020 }
3021
3022 interface LoDashImplicitArrayWrapper<T> {
3023 /**
3024 * @see _.slice
3025 */
3026 slice(
3027 start?: number,
3028 end?: number
3029 ): LoDashImplicitArrayWrapper<T>;
3030 }
3031
3032 interface LoDashExplicitArrayWrapper<T> {
3033 /**
3034 * @see _.slice
3035 */
3036 slice(
3037 start?: number,
3038 end?: number
3039 ): LoDashExplicitArrayWrapper<T>;
3040 }
3041
3042 //_.sortedIndex
3043 interface LoDashStatic {
3044 /**
3045 * Uses a binary search to determine the lowest index at which `value` should
3046 * be inserted into `array` in order to maintain its sort order.
3047 *
3048 * @static
3049 * @memberOf _
3050 * @category Array
3051 * @param {Array} array The sorted array to inspect.
3052 * @param {*} value The value to evaluate.
3053 * @returns {number} Returns the index at which `value` should be inserted into `array`.
3054 * @example
3055 *
3056 * _.sortedIndex([30, 50], 40);
3057 * // => 1
3058 *
3059 * _.sortedIndex([4, 5], 4);
3060 * // => 0
3061 */
3062 sortedIndex<T, TSort>(
3063 array: List<T>,
3064 value: T
3065 ): number;
3066
3067 /**
3068 * @see _.sortedIndex
3069 */
3070 sortedIndex<T>(
3071 array: List<T>,
3072 value: T
3073 ): number;
3074
3075 /**
3076 * @see _.sortedIndex
3077 */
3078 sortedIndex<T>(
3079 array: List<T>,
3080 value: T
3081 ): number;
3082
3083 /**
3084 * @see _.sortedIndex
3085 */
3086 sortedIndex<W, T>(
3087 array: List<T>,
3088 value: T
3089 ): number;
3090
3091 /**
3092 * @see _.sortedIndex
3093 */
3094 sortedIndex<T>(
3095 array: List<T>,
3096 value: T
3097 ): number;
3098 }
3099
3100 interface LoDashImplicitWrapper<T> {
3101 /**
3102 * @see _.sortedIndex
3103 */
3104 sortedIndex<TSort>(
3105 value: string
3106 ): number;
3107 }
3108
3109 interface LoDashImplicitArrayWrapper<T> {
3110 /**
3111 * @see _.sortedIndex
3112 */
3113 sortedIndex<TSort>(
3114 value: T
3115 ): number;
3116
3117 /**
3118 * @see _.sortedIndex
3119 */
3120 sortedIndex(
3121 value: T
3122 ): number;
3123 }
3124
3125 interface LoDashImplicitObjectWrapper<T> {
3126 /**
3127 * @see _.sortedIndex
3128 */
3129 sortedIndex<T, TSort>(
3130 value: T
3131 ): number;
3132
3133 /**
3134 * @see _.sortedIndex
3135 */
3136 sortedIndex<T>(
3137 value: T
3138 ): number;
3139
3140 /**
3141 * @see _.sortedIndex
3142 */
3143 sortedIndex<W, T>(
3144 value: T
3145 ): number;
3146 }
3147
3148 interface LoDashExplicitWrapper<T> {
3149 /**
3150 * @see _.sortedIndex
3151 */
3152 sortedIndex<TSort>(
3153 value: string
3154 ): LoDashExplicitWrapper<number>;
3155 }
3156
3157 interface LoDashExplicitArrayWrapper<T> {
3158 /**
3159 * @see _.sortedIndex
3160 */
3161 sortedIndex<TSort>(
3162 value: T
3163 ): LoDashExplicitWrapper<number>;
3164
3165 /**
3166 * @see _.sortedIndex
3167 */
3168 sortedIndex(
3169 value: T
3170 ): LoDashExplicitWrapper<number>;
3171
3172 /**
3173 * @see _.sortedIndex
3174 */
3175 sortedIndex<W>(
3176 value: T
3177 ): LoDashExplicitWrapper<number>;
3178 }
3179
3180 interface LoDashExplicitObjectWrapper<T> {
3181 /**
3182 * @see _.sortedIndex
3183 */
3184 sortedIndex<T, TSort>(
3185 value: T
3186 ): LoDashExplicitWrapper<number>;
3187
3188 /**
3189 * @see _.sortedIndex
3190 */
3191 sortedIndex<T>(
3192 value: T
3193 ): LoDashExplicitWrapper<number>;
3194
3195 /**
3196 * @see _.sortedIndex
3197 */
3198 sortedIndex<W, T>(
3199 value: T
3200 ): LoDashExplicitWrapper<number>;
3201 }
3202
3203 // _.sortedIndexBy
3204 interface LoDashStatic {
3205 /**
3206 * This method is like `_.sortedIndex` except that it accepts `iteratee`
3207 * which is invoked for `value` and each element of `array` to compute their
3208 * sort ranking. The iteratee is invoked with one argument: (value).
3209 *
3210 * @static
3211 * @memberOf _
3212 * @category Array
3213 * @param {Array} array The sorted array to inspect.
3214 * @param {*} value The value to evaluate.
3215 * @param {Function|Object|string} [iteratee=_.identity] The iteratee invoked per element.
3216 * @returns {number} Returns the index at which `value` should be inserted into `array`.
3217 * @example
3218 *
3219 * var dict = { 'thirty': 30, 'forty': 40, 'fifty': 50 };
3220 *
3221 * _.sortedIndexBy(['thirty', 'fifty'], 'forty', _.propertyOf(dict));
3222 * // => 1
3223 *
3224 * // using the `_.property` iteratee shorthand
3225 * _.sortedIndexBy([{ 'x': 4 }, { 'x': 5 }], { 'x': 4 }, 'x');
3226 * // => 0
3227 */
3228 sortedIndexBy<T, TSort>(
3229 array: List<T>,
3230 value: T,
3231 iteratee: (x: T) => TSort
3232 ): number;
3233
3234 /**
3235 * @see _.sortedIndexBy
3236 */
3237 sortedIndexBy<T>(
3238 array: List<T>,
3239 value: T,
3240 iteratee: (x: T) => any
3241 ): number;
3242
3243 /**
3244 * @see _.sortedIndexBy
3245 */
3246 sortedIndexBy<T>(
3247 array: List<T>,
3248 value: T,
3249 iteratee: string
3250 ): number;
3251
3252 /**
3253 * @see _.sortedIndexBy
3254 */
3255 sortedIndexBy<W, T>(
3256 array: List<T>,
3257 value: T,
3258 iteratee: W
3259 ): number;
3260
3261 /**
3262 * @see _.sortedIndexBy
3263 */
3264 sortedIndexBy<T>(
3265 array: List<T>,
3266 value: T,
3267 iteratee: Object
3268 ): number;
3269 }
3270
3271 interface LoDashImplicitWrapper<T> {
3272 /**
3273 * @see _.sortedIndexBy
3274 */
3275 sortedIndexBy<TSort>(
3276 value: string,
3277 iteratee: (x: string) => TSort
3278 ): number;
3279 }
3280
3281 interface LoDashImplicitArrayWrapper<T> {
3282 /**
3283 * @see _.sortedIndexBy
3284 */
3285 sortedIndexBy<TSort>(
3286 value: T,
3287 iteratee: (x: T) => TSort
3288 ): number;
3289
3290 /**
3291 * @see _.sortedIndexBy
3292 */
3293 sortedIndexBy(
3294 value: T,
3295 iteratee: string
3296 ): number;
3297
3298 /**
3299 * @see _.sortedIndexBy
3300 */
3301 sortedIndexBy<W>(
3302 value: T,
3303 iteratee: W
3304 ): number;
3305 }
3306
3307 interface LoDashImplicitObjectWrapper<T> {
3308 /**
3309 * @see _.sortedIndexBy
3310 */
3311 sortedIndexBy<T, TSort>(
3312 value: T,
3313 iteratee: (x: T) => TSort
3314 ): number;
3315
3316 /**
3317 * @see _.sortedIndexBy
3318 */
3319 sortedIndexBy<T>(
3320 value: T,
3321 iteratee: (x: T) => any
3322 ): number;
3323
3324 /**
3325 * @see _.sortedIndexBy
3326 */
3327 sortedIndexBy<T>(
3328 value: T,
3329 iteratee: string
3330 ): number;
3331
3332 /**
3333 * @see _.sortedIndexBy
3334 */
3335 sortedIndexBy<W, T>(
3336 value: T,
3337 iteratee: W
3338 ): number;
3339
3340 /**
3341 * @see _.sortedIndexBy
3342 */
3343 sortedIndexBy<T>(
3344 value: T,
3345 iteratee: Object
3346 ): number;
3347 }
3348
3349 interface LoDashExplicitWrapper<T> {
3350 /**
3351 * @see _.sortedIndexBy
3352 */
3353 sortedIndexBy<TSort>(
3354 value: string,
3355 iteratee: (x: string) => TSort
3356 ): LoDashExplicitWrapper<number>;
3357 }
3358
3359 interface LoDashExplicitArrayWrapper<T> {
3360 /**
3361 * @see _.sortedIndexBy
3362 */
3363 sortedIndexBy<TSort>(
3364 value: T,
3365 iteratee: (x: T) => TSort
3366 ): LoDashExplicitWrapper<number>;
3367
3368 /**
3369 * @see _.sortedIndexBy
3370 */
3371 sortedIndexBy(
3372 value: T,
3373 iteratee: string
3374 ): LoDashExplicitWrapper<number>;
3375
3376 /**
3377 * @see _.sortedIndexBy
3378 */
3379 sortedIndexBy<W>(
3380 value: T,
3381 iteratee: W
3382 ): LoDashExplicitWrapper<number>;
3383 }
3384
3385 interface LoDashExplicitObjectWrapper<T> {
3386 /**
3387 * @see _.sortedIndexBy
3388 */
3389 sortedIndexBy<T, TSort>(
3390 value: T,
3391 iteratee: (x: T) => TSort
3392 ): LoDashExplicitWrapper<number>;
3393
3394 /**
3395 * @see _.sortedIndexBy
3396 */
3397 sortedIndexBy<T>(
3398 value: T,
3399 iteratee: (x: T) => any
3400 ): LoDashExplicitWrapper<number>;
3401
3402 /**
3403 * @see _.sortedIndexBy
3404 */
3405 sortedIndexBy<T>(
3406 value: T,
3407 iteratee: string
3408 ): LoDashExplicitWrapper<number>;
3409
3410 /**
3411 * @see _.sortedIndexBy
3412 */
3413 sortedIndexBy<W, T>(
3414 value: T,
3415 iteratee: W
3416 ): LoDashExplicitWrapper<number>;
3417
3418 /**
3419 * @see _.sortedIndexBy
3420 */
3421 sortedIndexBy<T>(
3422 value: T,
3423 iteratee: Object
3424 ): LoDashExplicitWrapper<number>;
3425 }
3426
3427 //_.sortedLastIndex
3428 interface LoDashStatic {
3429 /**
3430 * This method is like `_.sortedIndex` except that it returns the highest
3431 * index at which `value` should be inserted into `array` in order to
3432 * maintain its sort order.
3433 *
3434 * @static
3435 * @memberOf _
3436 * @category Array
3437 * @param {Array} array The sorted array to inspect.
3438 * @param {*} value The value to evaluate.
3439 * @returns {number} Returns the index at which `value` should be inserted into `array`.
3440 * @example
3441 *
3442 * _.sortedLastIndex([4, 5], 4);
3443 * // => 1
3444 */
3445 sortedLastIndex<T, TSort>(
3446 array: List<T>,
3447 value: T
3448 ): number;
3449
3450 /**
3451 * @see _.sortedLastIndex
3452 */
3453 sortedLastIndex<T>(
3454 array: List<T>,
3455 value: T
3456 ): number;
3457
3458 /**
3459 * @see _.sortedLastIndex
3460 */
3461 sortedLastIndex<T>(
3462 array: List<T>,
3463 value: T
3464 ): number;
3465
3466 /**
3467 * @see _.sortedLastIndex
3468 */
3469 sortedLastIndex<W, T>(
3470 array: List<T>,
3471 value: T
3472 ): number;
3473
3474 /**
3475 * @see _.sortedLastIndex
3476 */
3477 sortedLastIndex<T>(
3478 array: List<T>,
3479 value: T
3480 ): number;
3481 }
3482
3483 interface LoDashImplicitWrapper<T> {
3484 /**
3485 * @see _.sortedLastIndex
3486 */
3487 sortedLastIndex<TSort>(
3488 value: string
3489 ): number;
3490 }
3491
3492 interface LoDashImplicitArrayWrapper<T> {
3493 /**
3494 * @see _.sortedLastIndex
3495 */
3496 sortedLastIndex<TSort>(
3497 value: T
3498 ): number;
3499
3500 /**
3501 * @see _.sortedLastIndex
3502 */
3503 sortedLastIndex(
3504 value: T
3505 ): number;
3506
3507 /**
3508 * @see _.sortedLastIndex
3509 */
3510 sortedLastIndex<W>(
3511 value: T
3512 ): number;
3513 }
3514
3515 interface LoDashImplicitObjectWrapper<T> {
3516 /**
3517 * @see _.sortedLastIndex
3518 */
3519 sortedLastIndex<T, TSort>(
3520 value: T
3521 ): number;
3522
3523 /**
3524 * @see _.sortedLastIndex
3525 */
3526 sortedLastIndex<T>(
3527 value: T
3528 ): number;
3529
3530 /**
3531 * @see _.sortedLastIndex
3532 */
3533 sortedLastIndex<W, T>(
3534 value: T
3535 ): number;
3536 }
3537
3538 interface LoDashExplicitWrapper<T> {
3539 /**
3540 * @see _.sortedLastIndex
3541 */
3542 sortedLastIndex<TSort>(
3543 value: string
3544 ): LoDashExplicitWrapper<number>;
3545 }
3546
3547 interface LoDashExplicitArrayWrapper<T> {
3548 /**
3549 * @see _.sortedLastIndex
3550 */
3551 sortedLastIndex<TSort>(
3552 value: T
3553 ): LoDashExplicitWrapper<number>;
3554
3555 /**
3556 * @see _.sortedLastIndex
3557 */
3558 sortedLastIndex(
3559 value: T
3560 ): LoDashExplicitWrapper<number>;
3561 }
3562
3563 interface LoDashExplicitObjectWrapper<T> {
3564 /**
3565 * @see _.sortedLastIndex
3566 */
3567 sortedLastIndex<T, TSort>(
3568 value: T
3569 ): LoDashExplicitWrapper<number>;
3570
3571 /**
3572 * @see _.sortedLastIndex
3573 */
3574 sortedLastIndex<T>(
3575 value: T
3576 ): LoDashExplicitWrapper<number>;
3577
3578 /**
3579 * @see _.sortedLastIndex
3580 */
3581 sortedLastIndex<W, T>(
3582 value: T
3583 ): LoDashExplicitWrapper<number>;
3584 }
3585
3586 //_.sortedLastIndexBy
3587 interface LoDashStatic {
3588 /**
3589 * This method is like `_.sortedLastIndex` except that it accepts `iteratee`
3590 * which is invoked for `value` and each element of `array` to compute their
3591 * sort ranking. The iteratee is invoked with one argument: (value).
3592 *
3593 * @static
3594 * @memberOf _
3595 * @category Array
3596 * @param {Array} array The sorted array to inspect.
3597 * @param {*} value The value to evaluate.
3598 * @param {Function|Object|string} [iteratee=_.identity] The iteratee invoked per element.
3599 * @returns {number} Returns the index at which `value` should be inserted into `array`.
3600 * @example
3601 *
3602 * // using the `_.property` iteratee shorthand
3603 * _.sortedLastIndexBy([{ 'x': 4 }, { 'x': 5 }], { 'x': 4 }, 'x');
3604 * // => 1
3605 */
3606 sortedLastIndexBy<T, TSort>(
3607 array: List<T>,
3608 value: T,
3609 iteratee: (x: T) => TSort
3610 ): number;
3611
3612 /**
3613 * @see _.sortedLastIndexBy
3614 */
3615 sortedLastIndexBy<T>(
3616 array: List<T>,
3617 value: T,
3618 iteratee: (x: T) => any
3619 ): number;
3620
3621 /**
3622 * @see _.sortedLastIndexBy
3623 */
3624 sortedLastIndexBy<T>(
3625 array: List<T>,
3626 value: T,
3627 iteratee: string
3628 ): number;
3629
3630 /**
3631 * @see _.sortedLastIndexBy
3632 */
3633 sortedLastIndexBy<W, T>(
3634 array: List<T>,
3635 value: T,
3636 iteratee: W
3637 ): number;
3638
3639 /**
3640 * @see _.sortedLastIndexBy
3641 */
3642 sortedLastIndexBy<T>(
3643 array: List<T>,
3644 value: T,
3645 iteratee: Object
3646 ): number;
3647 }
3648
3649 interface LoDashImplicitWrapper<T> {
3650 /**
3651 * @see _.sortedLastIndexBy
3652 */
3653 sortedLastIndexBy<TSort>(
3654 value: string,
3655 iteratee: (x: string) => TSort
3656 ): number;
3657 }
3658
3659 interface LoDashImplicitArrayWrapper<T> {
3660 /**
3661 * @see _.sortedLastIndexBy
3662 */
3663 sortedLastIndexBy<TSort>(
3664 value: T,
3665 iteratee: (x: T) => TSort
3666 ): number;
3667
3668 /**
3669 * @see _.sortedLastIndexBy
3670 */
3671 sortedLastIndexBy(
3672 value: T,
3673 iteratee: string
3674 ): number;
3675
3676 /**
3677 * @see _.sortedLastIndexBy
3678 */
3679 sortedLastIndexBy<W>(
3680 value: T,
3681 iteratee: W
3682 ): number;
3683 }
3684
3685 interface LoDashImplicitObjectWrapper<T> {
3686 /**
3687 * @see _.sortedLastIndexBy
3688 */
3689 sortedLastIndexBy<T, TSort>(
3690 value: T,
3691 iteratee: (x: T) => TSort
3692 ): number;
3693
3694 /**
3695 * @see _.sortedLastIndexBy
3696 */
3697 sortedLastIndexBy<T>(
3698 value: T,
3699 iteratee: (x: T) => any
3700 ): number;
3701
3702 /**
3703 * @see _.sortedLastIndexBy
3704 */
3705 sortedLastIndexBy<T>(
3706 value: T,
3707 iteratee: string
3708 ): number;
3709
3710 /**
3711 * @see _.sortedLastIndexBy
3712 */
3713 sortedLastIndexBy<W, T>(
3714 value: T,
3715 iteratee: W
3716 ): number;
3717
3718 /**
3719 * @see _.sortedLastIndexBy
3720 */
3721 sortedLastIndexBy<T>(
3722 value: T,
3723 iteratee: Object
3724 ): number;
3725 }
3726
3727 interface LoDashExplicitWrapper<T> {
3728 /**
3729 * @see _.sortedLastIndexBy
3730 */
3731 sortedLastIndexBy<TSort>(
3732 value: string,
3733 iteratee: (x: string) => TSort
3734 ): LoDashExplicitWrapper<number>;
3735 }
3736
3737 interface LoDashExplicitArrayWrapper<T> {
3738 /**
3739 * @see _.sortedLastIndexBy
3740 */
3741 sortedLastIndexBy<TSort>(
3742 value: T,
3743 iteratee: (x: T) => TSort
3744 ): LoDashExplicitWrapper<number>;
3745
3746 /**
3747 * @see _.sortedLastIndexBy
3748 */
3749 sortedLastIndexBy(
3750 value: T,
3751 iteratee: string
3752 ): LoDashExplicitWrapper<number>;
3753
3754 /**
3755 * @see _.sortedLastIndexBy
3756 */
3757 sortedLastIndexBy<W>(
3758 value: T,
3759 iteratee: W
3760 ): LoDashExplicitWrapper<number>;
3761 }
3762
3763 interface LoDashExplicitObjectWrapper<T> {
3764 /**
3765 * @see _.sortedLastIndexBy
3766 */
3767 sortedLastIndexBy<T, TSort>(
3768 value: T,
3769 iteratee: (x: T) => TSort
3770 ): LoDashExplicitWrapper<number>;
3771
3772 /**
3773 * @see _.sortedLastIndexBy
3774 */
3775 sortedLastIndexBy<T>(
3776 value: T,
3777 iteratee: (x: T) => any
3778 ): LoDashExplicitWrapper<number>;
3779
3780 /**
3781 * @see _.sortedLastIndexBy
3782 */
3783 sortedLastIndexBy<T>(
3784 value: T,
3785 iteratee: string
3786 ): LoDashExplicitWrapper<number>;
3787
3788 /**
3789 * @see _.sortedLastIndexBy
3790 */
3791 sortedLastIndexBy<W, T>(
3792 value: T,
3793 iteratee: W
3794 ): LoDashExplicitWrapper<number>;
3795
3796 /**
3797 * @see _.sortedLastIndexBy
3798 */
3799 sortedLastIndexBy<T>(
3800 value: T,
3801 iteratee: Object
3802 ): LoDashExplicitWrapper<number>;
3803 }
3804
3805 //_.sortedLastIndexOf DUMMY
3806 interface LoDashStatic {
3807 /**
3808 * This method is like `_.lastIndexOf` except that it performs a binary
3809 * search on a sorted `array`.
3810 *
3811 * @static
3812 * @memberOf _
3813 * @category Array
3814 * @param {Array} array The array to search.
3815 * @param {*} value The value to search for.
3816 * @returns {number} Returns the index of the matched value, else `-1`.
3817 * @example
3818 *
3819 * _.sortedLastIndexOf([1, 1, 2, 2], 2);
3820 * // => 3
3821 */
3822 sortedLastIndexOf(
3823 array: List<any>,
3824 ...values: any[]
3825 ): any[];
3826 }
3827
3828 //_.tail
3829 interface LoDashStatic {
3830 /**
3831 * @see _.rest
3832 */
3833 tail<T>(array: List<T>): T[];
3834 }
3835
3836 interface LoDashImplicitArrayWrapper<T> {
3837 /**
3838 * @see _.rest
3839 */
3840 tail(): LoDashImplicitArrayWrapper<T>;
3841 }
3842
3843 interface LoDashImplicitObjectWrapper<T> {
3844 /**
3845 * @see _.rest
3846 */
3847 tail<T>(): LoDashImplicitArrayWrapper<T>;
3848 }
3849
3850 interface LoDashExplicitArrayWrapper<T> {
3851 /**
3852 * @see _.rest
3853 */
3854 tail(): LoDashExplicitArrayWrapper<T>;
3855 }
3856
3857 interface LoDashExplicitObjectWrapper<T> {
3858 /**
3859 * @see _.rest
3860 */
3861 tail<T>(): LoDashExplicitArrayWrapper<T>;
3862 }
3863
3864 //_.take
3865 interface LoDashStatic {
3866 /**
3867 * Creates a slice of array with n elements taken from the beginning.
3868 *
3869 * @param array The array to query.
3870 * @param n The number of elements to take.
3871 * @return Returns the slice of array.
3872 */
3873 take<T>(
3874 array: List<T>,
3875 n?: number
3876 ): T[];
3877 }
3878
3879 interface LoDashImplicitArrayWrapper<T> {
3880 /**
3881 * @see _.take
3882 */
3883 take(n?: number): LoDashImplicitArrayWrapper<T>;
3884 }
3885
3886 interface LoDashImplicitObjectWrapper<T> {
3887 /**
3888 * @see _.take
3889 */
3890 take<TResult>(n?: number): LoDashImplicitArrayWrapper<TResult>;
3891 }
3892
3893 interface LoDashExplicitArrayWrapper<T> {
3894 /**
3895 * @see _.take
3896 */
3897 take(n?: number): LoDashExplicitArrayWrapper<T>;
3898 }
3899
3900 interface LoDashExplicitObjectWrapper<T> {
3901 /**
3902 * @see _.take
3903 */
3904 take<TResult>(n?: number): LoDashExplicitArrayWrapper<TResult>;
3905 }
3906
3907 //_.takeRight
3908 interface LoDashStatic {
3909 /**
3910 * Creates a slice of array with n elements taken from the end.
3911 *
3912 * @param array The array to query.
3913 * @param n The number of elements to take.
3914 * @return Returns the slice of array.
3915 */
3916 takeRight<T>(
3917 array: List<T>,
3918 n?: number
3919 ): T[];
3920 }
3921
3922 interface LoDashImplicitArrayWrapper<T> {
3923 /**
3924 * @see _.takeRight
3925 */
3926 takeRight(n?: number): LoDashImplicitArrayWrapper<T>;
3927 }
3928
3929 interface LoDashImplicitObjectWrapper<T> {
3930 /**
3931 * @see _.takeRight
3932 */
3933 takeRight<TResult>(n?: number): LoDashImplicitArrayWrapper<TResult>;
3934 }
3935
3936 interface LoDashExplicitArrayWrapper<T> {
3937 /**
3938 * @see _.takeRight
3939 */
3940 takeRight(n?: number): LoDashExplicitArrayWrapper<T>;
3941 }
3942
3943 interface LoDashExplicitObjectWrapper<T> {
3944 /**
3945 * @see _.takeRight
3946 */
3947 takeRight<TResult>(n?: number): LoDashExplicitArrayWrapper<TResult>;
3948 }
3949
3950 //_.takeRightWhile
3951 interface LoDashStatic {
3952 /**
3953 * Creates a slice of array with elements taken from the end. Elements are taken until predicate returns
3954 * falsey. The predicate is bound to thisArg and invoked with three arguments: (value, index, array).
3955 *
3956 * If a property name is provided for predicate the created _.property style callback returns the property
3957 * value of the given element.
3958 *
3959 * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for
3960 * elements that have a matching property value, else false.
3961 *
3962 * If an object is provided for predicate the created _.matches style callback returns true for elements that
3963 * have the properties of the given object, else false.
3964 *
3965 * @param array The array to query.
3966 * @param predicate The function invoked per iteration.
3967 * @param thisArg The this binding of predicate.
3968 * @return Returns the slice of array.
3969 */
3970 takeRightWhile<TValue>(
3971 array: List<TValue>,
3972 predicate?: ListIterator<TValue, boolean>
3973 ): TValue[];
3974
3975 /**
3976 * @see _.takeRightWhile
3977 */
3978 takeRightWhile<TValue>(
3979 array: List<TValue>,
3980 predicate?: string
3981 ): TValue[];
3982
3983 /**
3984 * @see _.takeRightWhile
3985 */
3986 takeRightWhile<TWhere, TValue>(
3987 array: List<TValue>,
3988 predicate?: TWhere
3989 ): TValue[];
3990 }
3991
3992 interface LoDashImplicitArrayWrapper<T> {
3993 /**
3994 * @see _.takeRightWhile
3995 */
3996 takeRightWhile(
3997 predicate?: ListIterator<T, boolean>
3998 ): LoDashImplicitArrayWrapper<T>;
3999
4000 /**
4001 * @see _.takeRightWhile
4002 */
4003 takeRightWhile(
4004 predicate?: string
4005 ): LoDashImplicitArrayWrapper<T>;
4006
4007 /**
4008 * @see _.takeRightWhile
4009 */
4010 takeRightWhile<TWhere>(
4011 predicate?: TWhere
4012 ): LoDashImplicitArrayWrapper<T>;
4013 }
4014
4015 interface LoDashImplicitObjectWrapper<T> {
4016 /**
4017 * @see _.takeRightWhile
4018 */
4019 takeRightWhile<TValue>(
4020 predicate?: ListIterator<TValue, boolean>
4021 ): LoDashImplicitArrayWrapper<TValue>;
4022
4023 /**
4024 * @see _.takeRightWhile
4025 */
4026 takeRightWhile<TValue>(
4027 predicate?: string
4028 ): LoDashImplicitArrayWrapper<TValue>;
4029
4030 /**
4031 * @see _.takeRightWhile
4032 */
4033 takeRightWhile<TWhere, TValue>(
4034 predicate?: TWhere
4035 ): LoDashImplicitArrayWrapper<TValue>;
4036 }
4037
4038 interface LoDashExplicitArrayWrapper<T> {
4039 /**
4040 * @see _.takeRightWhile
4041 */
4042 takeRightWhile(
4043 predicate?: ListIterator<T, boolean>
4044 ): LoDashExplicitArrayWrapper<T>;
4045
4046 /**
4047 * @see _.takeRightWhile
4048 */
4049 takeRightWhile(
4050 predicate?: string
4051 ): LoDashExplicitArrayWrapper<T>;
4052
4053 /**
4054 * @see _.takeRightWhile
4055 */
4056 takeRightWhile<TWhere>(
4057 predicate?: TWhere
4058 ): LoDashExplicitArrayWrapper<T>;
4059 }
4060
4061 interface LoDashExplicitObjectWrapper<T> {
4062 /**
4063 * @see _.takeRightWhile
4064 */
4065 takeRightWhile<TValue>(
4066 predicate?: ListIterator<TValue, boolean>
4067 ): LoDashExplicitArrayWrapper<TValue>;
4068
4069 /**
4070 * @see _.takeRightWhile
4071 */
4072 takeRightWhile<TValue>(
4073 predicate?: string
4074 ): LoDashExplicitArrayWrapper<TValue>;
4075
4076 /**
4077 * @see _.takeRightWhile
4078 */
4079 takeRightWhile<TWhere, TValue>(
4080 predicate?: TWhere
4081 ): LoDashExplicitArrayWrapper<TValue>;
4082 }
4083
4084 //_.takeWhile
4085 interface LoDashStatic {
4086 /**
4087 * Creates a slice of array with elements taken from the beginning. Elements are taken until predicate returns
4088 * falsey. The predicate is bound to thisArg and invoked with three arguments: (value, index, array).
4089 *
4090 * If a property name is provided for predicate the created _.property style callback returns the property
4091 * value of the given element.
4092 *
4093 * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for
4094 * elements that have a matching property value, else false.
4095 *
4096 * If an object is provided for predicate the created _.matches style callback returns true for elements that
4097 * have the properties of the given object, else false.
4098 *
4099 * @param array The array to query.
4100 * @param predicate The function invoked per iteration.
4101 * @param thisArg The this binding of predicate.
4102 * @return Returns the slice of array.
4103 */
4104 takeWhile<TValue>(
4105 array: List<TValue>,
4106 predicate?: ListIterator<TValue, boolean>
4107 ): TValue[];
4108
4109 /**
4110 * @see _.takeWhile
4111 */
4112 takeWhile<TValue>(
4113 array: List<TValue>,
4114 predicate?: string
4115 ): TValue[];
4116
4117 /**
4118 * @see _.takeWhile
4119 */
4120 takeWhile<TWhere, TValue>(
4121 array: List<TValue>,
4122 predicate?: TWhere
4123 ): TValue[];
4124 }
4125
4126 interface LoDashImplicitArrayWrapper<T> {
4127 /**
4128 * @see _.takeWhile
4129 */
4130 takeWhile(
4131 predicate?: ListIterator<T, boolean>
4132 ): LoDashImplicitArrayWrapper<T>;
4133
4134 /**
4135 * @see _.takeWhile
4136 */
4137 takeWhile(
4138 predicate?: string
4139 ): LoDashImplicitArrayWrapper<T>;
4140
4141 /**
4142 * @see _.takeWhile
4143 */
4144 takeWhile<TWhere>(
4145 predicate?: TWhere
4146 ): LoDashImplicitArrayWrapper<T>;
4147 }
4148
4149 interface LoDashImplicitObjectWrapper<T> {
4150 /**
4151 * @see _.takeWhile
4152 */
4153 takeWhile<TValue>(
4154 predicate?: ListIterator<TValue, boolean>
4155 ): LoDashImplicitArrayWrapper<TValue>;
4156
4157 /**
4158 * @see _.takeWhile
4159 */
4160 takeWhile<TValue>(
4161 predicate?: string
4162 ): LoDashImplicitArrayWrapper<TValue>;
4163
4164 /**
4165 * @see _.takeWhile
4166 */
4167 takeWhile<TWhere, TValue>(
4168 predicate?: TWhere
4169 ): LoDashImplicitArrayWrapper<TValue>;
4170 }
4171
4172 interface LoDashExplicitArrayWrapper<T> {
4173 /**
4174 * @see _.takeWhile
4175 */
4176 takeWhile(
4177 predicate?: ListIterator<T, boolean>
4178 ): LoDashExplicitArrayWrapper<T>;
4179
4180 /**
4181 * @see _.takeWhile
4182 */
4183 takeWhile(
4184 predicate?: string
4185 ): LoDashExplicitArrayWrapper<T>;
4186
4187 /**
4188 * @see _.takeWhile
4189 */
4190 takeWhile<TWhere>(
4191 predicate?: TWhere
4192 ): LoDashExplicitArrayWrapper<T>;
4193 }
4194
4195 interface LoDashExplicitObjectWrapper<T> {
4196 /**
4197 * @see _.takeWhile
4198 */
4199 takeWhile<TValue>(
4200 predicate?: ListIterator<TValue, boolean>
4201 ): LoDashExplicitArrayWrapper<TValue>;
4202
4203 /**
4204 * @see _.takeWhile
4205 */
4206 takeWhile<TValue>(
4207 predicate?: string
4208 ): LoDashExplicitArrayWrapper<TValue>;
4209
4210 /**
4211 * @see _.takeWhile
4212 */
4213 takeWhile<TWhere, TValue>(
4214 predicate?: TWhere
4215 ): LoDashExplicitArrayWrapper<TValue>;
4216 }
4217
4218 //_.union
4219 interface LoDashStatic {
4220 /**
4221 * Creates an array of unique values, in order, from all of the provided arrays using SameValueZero for
4222 * equality comparisons.
4223 *
4224 * @param arrays The arrays to inspect.
4225 * @return Returns the new array of combined values.
4226 */
4227 union<T>(...arrays: Array<List<T>>): T[];
4228 }
4229
4230 interface LoDashImplicitArrayWrapper<T> {
4231 /**
4232 * @see _.union
4233 */
4234 union(...arrays: Array<List<T>>): LoDashImplicitArrayWrapper<T>;
4235
4236 /**
4237 * @see _.union
4238 */
4239 union<T>(...arrays: Array<List<T>>): LoDashImplicitArrayWrapper<T>;
4240 }
4241
4242 interface LoDashImplicitObjectWrapper<T> {
4243 /**
4244 * @see _.union
4245 */
4246 union<T>(...arrays: Array<List<T>>): LoDashImplicitArrayWrapper<T>;
4247 }
4248
4249 interface LoDashExplicitArrayWrapper<T> {
4250 /**
4251 * @see _.union
4252 */
4253 union(...arrays: Array<List<T>>): LoDashExplicitArrayWrapper<T>;
4254
4255 /**
4256 * @see _.union
4257 */
4258 union<T>(...arrays: Array<List<T>>): LoDashExplicitArrayWrapper<T>;
4259 }
4260
4261 interface LoDashExplicitObjectWrapper<T> {
4262 /**
4263 * @see _.union
4264 */
4265 union<T>(...arrays: Array<List<T>>): LoDashExplicitArrayWrapper<T>;
4266 }
4267
4268 //_.unionBy
4269 interface LoDashStatic {
4270 /**
4271 * This method is like `_.union` except that it accepts `iteratee` which is
4272 * invoked for each element of each `arrays` to generate the criterion by which
4273 * uniqueness is computed. The iteratee is invoked with one argument: (value).
4274 *
4275 * @param arrays The arrays to inspect.
4276 * @param iteratee The iteratee invoked per element.
4277 * @return Returns the new array of combined values.
4278 */
4279 unionBy<T>(
4280 arrays: List<T>,
4281 iteratee?: (value: T) => any
4282 ): T[];
4283
4284 /**
4285 * @see _.unionBy
4286 */
4287 unionBy<T, W extends Object>(
4288 arrays: List<T>,
4289 iteratee?: W
4290 ): T[];
4291
4292 /**
4293 * @see _.unionBy
4294 */
4295 unionBy<T>(
4296 arrays1: List<T>,
4297 arrays2: List<T>,
4298 iteratee?: (value: T) => any
4299 ): T[];
4300
4301 /**
4302 * @see _.unionBy
4303 */
4304 unionBy<T, W extends Object>(
4305 arrays1: List<T>,
4306 arrays2: List<T>,
4307 iteratee?: W
4308 ): T[];
4309
4310 /**
4311 * @see _.unionBy
4312 */
4313 unionBy<T>(
4314 arrays1: List<T>,
4315 arrays2: List<T>,
4316 arrays3: List<T>,
4317 iteratee?: (value: T) => any
4318 ): T[];
4319
4320 /**
4321 * @see _.unionBy
4322 */
4323 unionBy<T, W extends Object>(
4324 arrays1: List<T>,
4325 arrays2: List<T>,
4326 arrays3: List<T>,
4327 iteratee?: W
4328 ): T[];
4329
4330 /**
4331 * @see _.unionBy
4332 */
4333 unionBy<T>(
4334 arrays1: List<T>,
4335 arrays2: List<T>,
4336 arrays3: List<T>,
4337 arrays4: List<T>,
4338 iteratee?: (value: T) => any
4339 ): T[];
4340
4341 /**
4342 * @see _.unionBy
4343 */
4344 unionBy<T, W extends Object>(
4345 arrays1: List<T>,
4346 arrays2: List<T>,
4347 arrays3: List<T>,
4348 arrays4: List<T>,
4349 iteratee?: W
4350 ): T[];
4351
4352 /**
4353 * @see _.unionBy
4354 */
4355 unionBy<T>(
4356 arrays1: List<T>,
4357 arrays2: List<T>,
4358 arrays3: List<T>,
4359 arrays4: List<T>,
4360 arrays5: List<T>,
4361 iteratee?: (value: T) => any
4362 ): T[];
4363
4364 /**
4365 * @see _.unionBy
4366 */
4367 unionBy<T, W extends Object>(
4368 arrays1: List<T>,
4369 arrays2: List<T>,
4370 arrays3: List<T>,
4371 arrays4: List<T>,
4372 arrays5: List<T>,
4373 iteratee?: W
4374 ): T[];
4375
4376 /**
4377 * @see _.unionBy
4378 */
4379 unionBy<T>(
4380 arrays: List<T>,
4381 ...iteratee: any[]
4382 ): T[];
4383 }
4384
4385 interface LoDashImplicitArrayWrapper<T> {
4386 /**
4387 * @see _.unionBy
4388 */
4389 unionBy<T>(
4390 iteratee?: (value: T) => any
4391 ): LoDashImplicitArrayWrapper<T>;
4392
4393 /**
4394 * @see _.unionBy
4395 */
4396 unionBy<T, W extends Object>(
4397 iteratee?: W
4398 ): LoDashImplicitArrayWrapper<T>;
4399
4400 /**
4401 * @see _.unionBy
4402 */
4403 unionBy<T>(
4404 arrays2: List<T>,
4405 iteratee?: (value: T) => any
4406 ): LoDashImplicitArrayWrapper<T>;
4407
4408 /**
4409 * @see _.unionBy
4410 */
4411 unionBy<T, W extends Object>(
4412 arrays2: List<T>,
4413 iteratee?: W
4414 ): LoDashImplicitArrayWrapper<T>;
4415
4416 /**
4417 * @see _.unionBy
4418 */
4419 unionBy<T>(
4420 arrays2: List<T>,
4421 arrays3: List<T>,
4422 iteratee?: (value: T) => any
4423 ): LoDashImplicitArrayWrapper<T>;
4424
4425 /**
4426 * @see _.unionBy
4427 */
4428 unionBy<T, W extends Object>(
4429 arrays2: List<T>,
4430 arrays3: List<T>,
4431 iteratee?: W
4432 ): LoDashImplicitArrayWrapper<T>;
4433
4434 /**
4435 * @see _.unionBy
4436 */
4437 unionBy<T>(
4438 arrays2: List<T>,
4439 arrays3: List<T>,
4440 arrays4: List<T>,
4441 iteratee?: (value: T) => any
4442 ): LoDashImplicitArrayWrapper<T>;
4443
4444 /**
4445 * @see _.unionBy
4446 */
4447 unionBy<T, W extends Object>(
4448 arrays2: List<T>,
4449 arrays3: List<T>,
4450 arrays4: List<T>,
4451 iteratee?: W
4452 ): LoDashImplicitArrayWrapper<T>;
4453
4454 /**
4455 * @see _.unionBy
4456 */
4457 unionBy<T>(
4458 arrays2: List<T>,
4459 arrays3: List<T>,
4460 arrays4: List<T>,
4461 arrays5: List<T>,
4462 iteratee?: (value: T) => any
4463 ): LoDashImplicitArrayWrapper<T>;
4464
4465 /**
4466 * @see _.unionBy
4467 */
4468 unionBy<T, W extends Object>(
4469 arrays2: List<T>,
4470 arrays3: List<T>,
4471 arrays4: List<T>,
4472 arrays5: List<T>,
4473 iteratee?: W
4474 ): LoDashImplicitArrayWrapper<T>;
4475
4476 /**
4477 * @see _.unionBy
4478 */
4479 unionBy<T>(
4480 ...iteratee: any[]
4481 ): LoDashImplicitArrayWrapper<T>;
4482 }
4483
4484 interface LoDashImplicitObjectWrapper<T> {
4485 /**
4486 * @see _.unionBy
4487 */
4488 unionBy<T>(
4489 iteratee?: (value: T) => any
4490 ): LoDashImplicitArrayWrapper<T>;
4491
4492 /**
4493 * @see _.unionBy
4494 */
4495 unionBy<T, W extends Object>(
4496 iteratee?: W
4497 ): LoDashImplicitArrayWrapper<T>;
4498
4499 /**
4500 * @see _.unionBy
4501 */
4502 unionBy<T>(
4503 arrays2: List<T>,
4504 iteratee?: (value: T) => any
4505 ): LoDashImplicitArrayWrapper<T>;
4506
4507 /**
4508 * @see _.unionBy
4509 */
4510 unionBy<T, W extends Object>(
4511 arrays2: List<T>,
4512 iteratee?: W
4513 ): LoDashImplicitArrayWrapper<T>;
4514
4515 /**
4516 * @see _.unionBy
4517 */
4518 unionBy<T>(
4519 arrays2: List<T>,
4520 arrays3: List<T>,
4521 iteratee?: (value: T) => any
4522 ): LoDashImplicitArrayWrapper<T>;
4523
4524 /**
4525 * @see _.unionBy
4526 */
4527 unionBy<T, W extends Object>(
4528 arrays2: List<T>,
4529 arrays3: List<T>,
4530 iteratee?: W
4531 ): LoDashImplicitArrayWrapper<T>;
4532
4533 /**
4534 * @see _.unionBy
4535 */
4536 unionBy<T>(
4537 arrays2: List<T>,
4538 arrays3: List<T>,
4539 arrays4: List<T>,
4540 iteratee?: (value: T) => any
4541 ): LoDashImplicitArrayWrapper<T>;
4542
4543 /**
4544 * @see _.unionBy
4545 */
4546 unionBy<T, W extends Object>(
4547 arrays2: List<T>,
4548 arrays3: List<T>,
4549 arrays4: List<T>,
4550 iteratee?: W
4551 ): LoDashImplicitArrayWrapper<T>;
4552
4553 /**
4554 * @see _.unionBy
4555 */
4556 unionBy<T>(
4557 arrays2: List<T>,
4558 arrays3: List<T>,
4559 arrays4: List<T>,
4560 arrays5: List<T>,
4561 iteratee?: (value: T) => any
4562 ): LoDashImplicitArrayWrapper<T>;
4563
4564 /**
4565 * @see _.unionBy
4566 */
4567 unionBy<T, W extends Object>(
4568 arrays2: List<T>,
4569 arrays3: List<T>,
4570 arrays4: List<T>,
4571 arrays5: List<T>,
4572 iteratee?: W
4573 ): LoDashImplicitArrayWrapper<T>;
4574
4575 /**
4576 * @see _.unionBy
4577 */
4578 unionBy<T>(
4579 ...iteratee: any[]
4580 ): LoDashImplicitArrayWrapper<T>;
4581 }
4582
4583 interface LoDashExplicitArrayWrapper<T> {
4584 /**
4585 * @see _.unionBy
4586 */
4587 unionBy<T>(
4588 iteratee?: (value: T) => any
4589 ): LoDashExplicitArrayWrapper<T>;
4590
4591 /**
4592 * @see _.unionBy
4593 */
4594 unionBy<T, W extends Object>(
4595 iteratee?: W
4596 ): LoDashExplicitArrayWrapper<T>;
4597
4598 /**
4599 * @see _.unionBy
4600 */
4601 unionBy<T>(
4602 arrays2: List<T>,
4603 iteratee?: (value: T) => any
4604 ): LoDashExplicitArrayWrapper<T>;
4605
4606 /**
4607 * @see _.unionBy
4608 */
4609 unionBy<T, W extends Object>(
4610 arrays2: List<T>,
4611 iteratee?: W
4612 ): LoDashExplicitArrayWrapper<T>;
4613
4614 /**
4615 * @see _.unionBy
4616 */
4617 unionBy<T>(
4618 arrays2: List<T>,
4619 arrays3: List<T>,
4620 iteratee?: (value: T) => any
4621 ): LoDashExplicitArrayWrapper<T>;
4622
4623 /**
4624 * @see _.unionBy
4625 */
4626 unionBy<T, W extends Object>(
4627 arrays2: List<T>,
4628 arrays3: List<T>,
4629 iteratee?: W
4630 ): LoDashExplicitArrayWrapper<T>;
4631
4632 /**
4633 * @see _.unionBy
4634 */
4635 unionBy<T>(
4636 arrays2: List<T>,
4637 arrays3: List<T>,
4638 arrays4: List<T>,
4639 iteratee?: (value: T) => any
4640 ): LoDashExplicitArrayWrapper<T>;
4641
4642 /**
4643 * @see _.unionBy
4644 */
4645 unionBy<T, W extends Object>(
4646 arrays2: List<T>,
4647 arrays3: List<T>,
4648 arrays4: List<T>,
4649 iteratee?: W
4650 ): LoDashExplicitArrayWrapper<T>;
4651
4652 /**
4653 * @see _.unionBy
4654 */
4655 unionBy<T>(
4656 arrays2: List<T>,
4657 arrays3: List<T>,
4658 arrays4: List<T>,
4659 arrays5: List<T>,
4660 iteratee?: (value: T) => any
4661 ): LoDashExplicitArrayWrapper<T>;
4662
4663 /**
4664 * @see _.unionBy
4665 */
4666 unionBy<T, W extends Object>(
4667 arrays2: List<T>,
4668 arrays3: List<T>,
4669 arrays4: List<T>,
4670 arrays5: List<T>,
4671 iteratee?: W
4672 ): LoDashExplicitArrayWrapper<T>;
4673
4674 /**
4675 * @see _.unionBy
4676 */
4677 unionBy<T>(
4678 ...iteratee: any[]
4679 ): LoDashExplicitArrayWrapper<T>;
4680 }
4681
4682 interface LoDashExplicitObjectWrapper<T> {
4683 /**
4684 * @see _.unionBy
4685 */
4686 unionBy<T>(
4687 iteratee?: (value: T) => any
4688 ): LoDashExplicitArrayWrapper<T>;
4689
4690 /**
4691 * @see _.unionBy
4692 */
4693 unionBy<T, W extends Object>(
4694 iteratee?: W
4695 ): LoDashExplicitArrayWrapper<T>;
4696
4697 /**
4698 * @see _.unionBy
4699 */
4700 unionBy<T>(
4701 arrays2: List<T>,
4702 iteratee?: (value: T) => any
4703 ): LoDashExplicitArrayWrapper<T>;
4704
4705 /**
4706 * @see _.unionBy
4707 */
4708 unionBy<T, W extends Object>(
4709 arrays2: List<T>,
4710 iteratee?: W
4711 ): LoDashExplicitArrayWrapper<T>;
4712
4713 /**
4714 * @see _.unionBy
4715 */
4716 unionBy<T>(
4717 arrays2: List<T>,
4718 arrays3: List<T>,
4719 iteratee?: (value: T) => any
4720 ): LoDashExplicitArrayWrapper<T>;
4721
4722 /**
4723 * @see _.unionBy
4724 */
4725 unionBy<T, W extends Object>(
4726 arrays2: List<T>,
4727 arrays3: List<T>,
4728 iteratee?: W
4729 ): LoDashExplicitArrayWrapper<T>;
4730
4731 /**
4732 * @see _.unionBy
4733 */
4734 unionBy<T>(
4735 arrays2: List<T>,
4736 arrays3: List<T>,
4737 arrays4: List<T>,
4738 iteratee?: (value: T) => any
4739 ): LoDashExplicitArrayWrapper<T>;
4740
4741 /**
4742 * @see _.unionBy
4743 */
4744 unionBy<T, W extends Object>(
4745 arrays2: List<T>,
4746 arrays3: List<T>,
4747 arrays4: List<T>,
4748 iteratee?: W
4749 ): LoDashExplicitArrayWrapper<T>;
4750
4751 /**
4752 * @see _.unionBy
4753 */
4754 unionBy<T>(
4755 arrays2: List<T>,
4756 arrays3: List<T>,
4757 arrays4: List<T>,
4758 arrays5: List<T>,
4759 iteratee?: (value: T) => any
4760 ): LoDashExplicitArrayWrapper<T>;
4761
4762 /**
4763 * @see _.unionBy
4764 */
4765 unionBy<T, W extends Object>(
4766 arrays2: List<T>,
4767 arrays3: List<T>,
4768 arrays4: List<T>,
4769 arrays5: List<T>,
4770 iteratee?: W
4771 ): LoDashExplicitArrayWrapper<T>;
4772
4773 /**
4774 * @see _.unionBy
4775 */
4776 unionBy<T>(
4777 ...iteratee: any[]
4778 ): LoDashExplicitArrayWrapper<T>;
4779 }
4780
4781 //_.uniq
4782 interface LoDashStatic {
4783 /**
4784 * Creates a duplicate-free version of an array, using
4785 * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
4786 * for equality comparisons, in which only the first occurrence of each element
4787 * is kept.
4788 *
4789 * @static
4790 * @memberOf _
4791 * @category Array
4792 * @param {Array} array The array to inspect.
4793 * @returns {Array} Returns the new duplicate free array.
4794 * @example
4795 *
4796 * _.uniq([2, 1, 2]);
4797 * // => [2, 1]
4798 */
4799 uniq<T>(
4800 array: List<T>
4801 ): T[];
4802
4803 /**
4804 * @see _.uniq
4805 */
4806 uniq<T, TSort>(
4807 array: List<T>
4808 ): T[];
4809 }
4810
4811 interface LoDashImplicitWrapper<T> {
4812 /**
4813 * @see _.uniq
4814 */
4815 uniq<TSort>(): LoDashImplicitArrayWrapper<T>;
4816 }
4817
4818 interface LoDashImplicitArrayWrapper<T> {
4819 /**
4820 * @see _.uniq
4821 */
4822 uniq<TSort>(): LoDashImplicitArrayWrapper<T>;
4823
4824 /**
4825 * @see _.uniq
4826 */
4827 uniq(): LoDashImplicitArrayWrapper<T>;
4828 }
4829
4830 interface LoDashImplicitObjectWrapper<T> {
4831 uniq<T>(): LoDashImplicitArrayWrapper<T>;
4832
4833 /**
4834 * @see _.uniq
4835 */
4836 uniq<T, TSort>(): LoDashImplicitArrayWrapper<T>;
4837 }
4838
4839 interface LoDashExplicitWrapper<T> {
4840 /**
4841 * @see _.uniq
4842 */
4843 uniq<TSort>(): LoDashExplicitArrayWrapper<T>;
4844 }
4845
4846 interface LoDashExplicitArrayWrapper<T> {
4847 /**
4848 * @see _.uniq
4849 */
4850 uniq<TSort>(): LoDashExplicitArrayWrapper<T>;
4851
4852 /**
4853 * @see _.uniq
4854 */
4855 uniq(): LoDashExplicitArrayWrapper<T>;
4856 }
4857
4858 interface LoDashExplicitObjectWrapper<T> {
4859 /**
4860 * @see _.uniq
4861 */
4862 uniq<T>(): LoDashExplicitArrayWrapper<T>;
4863
4864 /**
4865 * @see _.uniq
4866 */
4867 uniq<T, TSort>(): LoDashExplicitArrayWrapper<T>;
4868 }
4869
4870 //_.uniqBy
4871 interface LoDashStatic {
4872 /**
4873 * This method is like `_.uniq` except that it accepts `iteratee` which is
4874 * invoked for each element in `array` to generate the criterion by which
4875 * uniqueness is computed. The iteratee is invoked with one argument: (value).
4876 *
4877 * @static
4878 * @memberOf _
4879 * @category Array
4880 * @param {Array} array The array to inspect.
4881 * @param {Function|Object|string} [iteratee=_.identity] The iteratee invoked per element.
4882 * @returns {Array} Returns the new duplicate free array.
4883 * @example
4884 *
4885 * _.uniqBy([2.1, 1.2, 2.3], Math.floor);
4886 * // => [2.1, 1.2]
4887 *
4888 * // using the `_.property` iteratee shorthand
4889 * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
4890 * // => [{ 'x': 1 }, { 'x': 2 }]
4891 */
4892 uniqBy<T>(
4893 array: List<T>,
4894 iteratee: ListIterator<T, any>
4895 ): T[];
4896
4897 /**
4898 * @see _.uniqBy
4899 */
4900 uniqBy<T, TSort>(
4901 array: List<T>,
4902 iteratee: ListIterator<T, TSort>
4903 ): T[];
4904
4905 /**
4906 * @see _.uniqBy
4907 */
4908 uniqBy<T>(
4909 array: List<T>,
4910 iteratee: string
4911 ): T[];
4912
4913 /**
4914 * @see _.uniqBy
4915 */
4916 uniqBy<T>(
4917 array: List<T>,
4918 iteratee: Object
4919 ): T[];
4920
4921 /**
4922 * @see _.uniqBy
4923 */
4924 uniqBy<TWhere extends {}, T>(
4925 array: List<T>,
4926 iteratee: TWhere
4927 ): T[];
4928 }
4929
4930 interface LoDashImplicitWrapper<T> {
4931 /**
4932 * @see _.uniqBy
4933 */
4934 uniqBy<TSort>(
4935 iteratee: ListIterator<T, TSort>
4936 ): LoDashImplicitArrayWrapper<T>;
4937 }
4938
4939 interface LoDashImplicitArrayWrapper<T> {
4940 /**
4941 * @see _.uniqBy
4942 */
4943 uniqBy<TSort>(
4944 iteratee: ListIterator<T, TSort>
4945 ): LoDashImplicitArrayWrapper<T>;
4946
4947 /**
4948 * @see _.uniqBy
4949 */
4950 uniqBy(
4951 iteratee: string
4952 ): LoDashImplicitArrayWrapper<T>;
4953
4954 /**
4955 * @see _.uniqBy
4956 */
4957 uniqBy<TWhere extends {}>(
4958 iteratee: TWhere
4959 ): LoDashImplicitArrayWrapper<T>;
4960 }
4961
4962 interface LoDashImplicitObjectWrapper<T> {
4963 /**
4964 * @see _.uniqBy
4965 */
4966 uniqBy<T>(
4967 iteratee: ListIterator<T, any>
4968 ): LoDashImplicitArrayWrapper<T>;
4969
4970 /**
4971 * @see _.uniqBy
4972 */
4973 uniqBy<T, TSort>(
4974 iteratee: ListIterator<T, TSort>
4975 ): LoDashImplicitArrayWrapper<T>;
4976
4977 /**
4978 * @see _.uniqBy
4979 */
4980 uniqBy<T>(
4981 iteratee: string
4982 ): LoDashImplicitArrayWrapper<T>;
4983
4984 /**
4985 * @see _.uniqBy
4986 */
4987 uniqBy<T>(
4988 iteratee: Object
4989 ): LoDashImplicitArrayWrapper<T>;
4990
4991 /**
4992 * @see _.uniqBy
4993 */
4994 uniqBy<TWhere extends {}, T>(
4995 iteratee: TWhere
4996 ): LoDashImplicitArrayWrapper<T>;
4997 }
4998
4999 interface LoDashExplicitWrapper<T> {
5000 /**
5001 * @see _.uniqBy
5002 */
5003 uniqBy<TSort>(
5004 iteratee: ListIterator<T, TSort>
5005 ): LoDashExplicitArrayWrapper<T>;
5006 }
5007
5008 interface LoDashExplicitArrayWrapper<T> {
5009 /**
5010 * @see _.uniqBy
5011 */
5012 uniqBy<TSort>(
5013 iteratee: ListIterator<T, TSort>
5014 ): LoDashExplicitArrayWrapper<T>;
5015
5016 /**
5017 * @see _.uniqBy
5018 */
5019 uniqBy(
5020 iteratee: string
5021 ): LoDashExplicitArrayWrapper<T>;
5022
5023 /**
5024 * @see _.uniqBy
5025 */
5026 uniqBy<TWhere extends {}>(
5027 iteratee: TWhere
5028 ): LoDashExplicitArrayWrapper<T>;
5029 }
5030
5031 interface LoDashExplicitObjectWrapper<T> {
5032 /**
5033 * @see _.uniqBy
5034 */
5035 uniqBy<T>(
5036 iteratee: ListIterator<T, any>
5037 ): LoDashExplicitArrayWrapper<T>;
5038
5039 /**
5040 * @see _.uniqBy
5041 */
5042 uniqBy<T, TSort>(
5043 iteratee: ListIterator<T, TSort>
5044 ): LoDashExplicitArrayWrapper<T>;
5045
5046 /**
5047 * @see _.uniqBy
5048 */
5049 uniqBy<T>(
5050 iteratee: string
5051 ): LoDashExplicitArrayWrapper<T>;
5052
5053 /**
5054 * @see _.uniqBy
5055 */
5056 uniqBy<T>(
5057 iteratee: Object
5058 ): LoDashExplicitArrayWrapper<T>;
5059
5060 /**
5061 * @see _.uniqBy
5062 */
5063 uniqBy<TWhere extends {}, T>(
5064 iteratee: TWhere
5065 ): LoDashExplicitArrayWrapper<T>;
5066 }
5067
5068 //_.sortedUniq
5069 interface LoDashStatic {
5070 /**
5071 * This method is like `_.uniq` except that it's designed and optimized
5072 * for sorted arrays.
5073 *
5074 * @static
5075 * @memberOf _
5076 * @category Array
5077 * @param {Array} array The array to inspect.
5078 * @returns {Array} Returns the new duplicate free array.
5079 * @example
5080 *
5081 * _.sortedUniq([1, 1, 2]);
5082 * // => [1, 2]
5083 */
5084 sortedUniq<T>(
5085 array: List<T>
5086 ): T[];
5087
5088 /**
5089 * @see _.sortedUniq
5090 */
5091 sortedUniq<T, TSort>(
5092 array: List<T>
5093 ): T[];
5094 }
5095
5096 interface LoDashImplicitWrapper<T> {
5097 /**
5098 * @see _.sortedUniq
5099 */
5100 sortedUniq<TSort>(): LoDashImplicitArrayWrapper<T>;
5101 }
5102
5103 interface LoDashImplicitArrayWrapper<T> {
5104 /**
5105 * @see _.sortedUniq
5106 */
5107 sortedUniq<TSort>(): LoDashImplicitArrayWrapper<T>;
5108
5109 /**
5110 * @see _.sortedUniq
5111 */
5112 sortedUniq(): LoDashImplicitArrayWrapper<T>;
5113 }
5114
5115 interface LoDashImplicitObjectWrapper<T> {
5116 sortedUniq<T>(): LoDashImplicitArrayWrapper<T>;
5117
5118 /**
5119 * @see _.sortedUniq
5120 */
5121 sortedUniq<T, TSort>(): LoDashImplicitArrayWrapper<T>;
5122 }
5123
5124 interface LoDashExplicitWrapper<T> {
5125 /**
5126 * @see _.sortedUniq
5127 */
5128 sortedUniq<TSort>(): LoDashExplicitArrayWrapper<T>;
5129 }
5130
5131 interface LoDashExplicitArrayWrapper<T> {
5132 /**
5133 * @see _.sortedUniq
5134 */
5135 sortedUniq<TSort>(): LoDashExplicitArrayWrapper<T>;
5136
5137 /**
5138 * @see _.sortedUniq
5139 */
5140 sortedUniq(): LoDashExplicitArrayWrapper<T>;
5141 }
5142
5143 interface LoDashExplicitObjectWrapper<T> {
5144 /**
5145 * @see _.sortedUniq
5146 */
5147 sortedUniq<T>(): LoDashExplicitArrayWrapper<T>;
5148
5149 /**
5150 * @see _.sortedUniq
5151 */
5152 sortedUniq<T, TSort>(): LoDashExplicitArrayWrapper<T>;
5153 }
5154
5155 //_.sortedUniqBy
5156 interface LoDashStatic {
5157 /**
5158 * This method is like `_.uniqBy` except that it's designed and optimized
5159 * for sorted arrays.
5160 *
5161 * @static
5162 * @memberOf _
5163 * @category Array
5164 * @param {Array} array The array to inspect.
5165 * @param {Function} [iteratee] The iteratee invoked per element.
5166 * @returns {Array} Returns the new duplicate free array.
5167 * @example
5168 *
5169 * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);
5170 * // => [1.1, 2.2]
5171 */
5172 sortedUniqBy<T>(
5173 array: List<T>,
5174 iteratee: ListIterator<T, any>
5175 ): T[];
5176
5177 /**
5178 * @see _.sortedUniqBy
5179 */
5180 sortedUniqBy<T, TSort>(
5181 array: List<T>,
5182 iteratee: ListIterator<T, TSort>
5183 ): T[];
5184
5185 /**
5186 * @see _.sortedUniqBy
5187 */
5188 sortedUniqBy<T>(
5189 array: List<T>,
5190 iteratee: string
5191 ): T[];
5192
5193 /**
5194 * @see _.sortedUniqBy
5195 */
5196 sortedUniqBy<T>(
5197 array: List<T>,
5198 iteratee: Object
5199 ): T[];
5200
5201 /**
5202 * @see _.sortedUniqBy
5203 */
5204 sortedUniqBy<TWhere extends {}, T>(
5205 array: List<T>,
5206 iteratee: TWhere
5207 ): T[];
5208 }
5209
5210 interface LoDashImplicitWrapper<T> {
5211 /**
5212 * @see _.sortedUniqBy
5213 */
5214 sortedUniqBy<TSort>(
5215 iteratee: ListIterator<T, TSort>
5216 ): LoDashImplicitArrayWrapper<T>;
5217 }
5218
5219 interface LoDashImplicitArrayWrapper<T> {
5220 /**
5221 * @see _.sortedUniqBy
5222 */
5223 sortedUniqBy<TSort>(
5224 iteratee: ListIterator<T, TSort>
5225 ): LoDashImplicitArrayWrapper<T>;
5226
5227 /**
5228 * @see _.sortedUniqBy
5229 */
5230 sortedUniqBy(
5231 iteratee: string
5232 ): LoDashImplicitArrayWrapper<T>;
5233
5234 /**
5235 * @see _.sortedUniqBy
5236 */
5237 sortedUniqBy<TWhere extends {}>(
5238 iteratee: TWhere
5239 ): LoDashImplicitArrayWrapper<T>;
5240 }
5241
5242 interface LoDashImplicitObjectWrapper<T> {
5243 /**
5244 * @see _.sortedUniqBy
5245 */
5246 sortedUniqBy<T>(
5247 iteratee: ListIterator<T, any>
5248 ): LoDashImplicitArrayWrapper<T>;
5249
5250 /**
5251 * @see _.sortedUniqBy
5252 */
5253 sortedUniqBy<T, TSort>(
5254 iteratee: ListIterator<T, TSort>
5255 ): LoDashImplicitArrayWrapper<T>;
5256
5257 /**
5258 * @see _.sortedUniqBy
5259 */
5260 sortedUniqBy<T>(
5261 iteratee: string
5262 ): LoDashImplicitArrayWrapper<T>;
5263
5264 /**
5265 * @see _.sortedUniqBy
5266 */
5267 sortedUniqBy<T>(
5268 iteratee: Object
5269 ): LoDashImplicitArrayWrapper<T>;
5270
5271 /**
5272 * @see _.sortedUniqBy
5273 */
5274 sortedUniqBy<TWhere extends {}, T>(
5275 iteratee: TWhere
5276 ): LoDashImplicitArrayWrapper<T>;
5277 }
5278
5279 interface LoDashExplicitWrapper<T> {
5280 /**
5281 * @see _.sortedUniqBy
5282 */
5283 sortedUniqBy<TSort>(
5284 iteratee: ListIterator<T, TSort>
5285 ): LoDashExplicitArrayWrapper<T>;
5286 }
5287
5288 interface LoDashExplicitArrayWrapper<T> {
5289 /**
5290 * @see _.sortedUniqBy
5291 */
5292 sortedUniqBy<TSort>(
5293 iteratee: ListIterator<T, TSort>
5294 ): LoDashExplicitArrayWrapper<T>;
5295
5296 /**
5297 * @see _.sortedUniqBy
5298 */
5299 sortedUniqBy(
5300 iteratee: string
5301 ): LoDashExplicitArrayWrapper<T>;
5302
5303 /**
5304 * @see _.sortedUniqBy
5305 */
5306 sortedUniqBy<TWhere extends {}>(
5307 iteratee: TWhere
5308 ): LoDashExplicitArrayWrapper<T>;
5309 }
5310
5311 interface LoDashExplicitObjectWrapper<T> {
5312 /**
5313 * @see _.sortedUniqBy
5314 */
5315 sortedUniqBy<T>(
5316 iteratee: ListIterator<T, any>
5317 ): LoDashExplicitArrayWrapper<T>;
5318
5319 /**
5320 * @see _.sortedUniqBy
5321 */
5322 sortedUniqBy<T, TSort>(
5323 iteratee: ListIterator<T, TSort>
5324 ): LoDashExplicitArrayWrapper<T>;
5325
5326 /**
5327 * @see _.sortedUniqBy
5328 */
5329 sortedUniqBy<T>(
5330 iteratee: string
5331 ): LoDashExplicitArrayWrapper<T>;
5332
5333 /**
5334 * @see _.sortedUniqBy
5335 */
5336 sortedUniqBy<T>(
5337 iteratee: Object
5338 ): LoDashExplicitArrayWrapper<T>;
5339
5340 /**
5341 * @see _.sortedUniqBy
5342 */
5343 sortedUniqBy<TWhere extends {}, T>(
5344 iteratee: TWhere
5345 ): LoDashExplicitArrayWrapper<T>;
5346 }
5347
5348 //_.unionWith DUMMY
5349 interface LoDashStatic {
5350 /**
5351 * This method is like `_.union` except that it accepts `comparator` which
5352 * is invoked to compare elements of `arrays`. The comparator is invoked
5353 * with two arguments: (arrVal, othVal).
5354 *
5355 * @static
5356 * @memberOf _
5357 * @category Array
5358 * @param {...Array} [arrays] The arrays to inspect.
5359 * @param {Function} [comparator] The comparator invoked per element.
5360 * @returns {Array} Returns the new array of combined values.
5361 * @example
5362 *
5363 * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
5364 * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
5365 *
5366 * _.unionWith(objects, others, _.isEqual);
5367 * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
5368 */
5369 unionWith(
5370 array: List<any>,
5371 ...values: any[]
5372 ): any[];
5373 }
5374
5375 //_.uniqWith DUMMY
5376 interface LoDashStatic {
5377 /**
5378 * This method is like `_.uniq` except that it accepts `comparator` which
5379 * is invoked to compare elements of `array`. The comparator is invoked with
5380 * two arguments: (arrVal, othVal).
5381 *
5382 * @static
5383 * @memberOf _
5384 * @category Array
5385 * @param {Array} array The array to inspect.
5386 * @param {Function} [comparator] The comparator invoked per element.
5387 * @returns {Array} Returns the new duplicate free array.
5388 * @example
5389 *
5390 * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
5391 *
5392 * _.uniqWith(objects, _.isEqual);
5393 * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]
5394 */
5395 uniqWith(
5396 array: List<any>,
5397 ...values: any[]
5398 ): any[];
5399 }
5400
5401 //_.unzip
5402 interface LoDashStatic {
5403 /**
5404 * This method is like _.zip except that it accepts an array of grouped elements and creates an array
5405 * regrouping the elements to their pre-zip configuration.
5406 *
5407 * @param array The array of grouped elements to process.
5408 * @return Returns the new array of regrouped elements.
5409 */
5410 unzip<T>(array: List<List<T>>): T[][];
5411 }
5412
5413 interface LoDashImplicitArrayWrapper<T> {
5414 /**
5415 * @see _.unzip
5416 */
5417 unzip<T>(): LoDashImplicitArrayWrapper<T[]>;
5418 }
5419
5420 interface LoDashImplicitObjectWrapper<T> {
5421 /**
5422 * @see _.unzip
5423 */
5424 unzip<T>(): LoDashImplicitArrayWrapper<T[]>;
5425 }
5426
5427 interface LoDashExplicitArrayWrapper<T> {
5428 /**
5429 * @see _.unzip
5430 */
5431 unzip<T>(): LoDashExplicitArrayWrapper<T[]>;
5432 }
5433
5434 interface LoDashExplicitObjectWrapper<T> {
5435 /**
5436 * @see _.unzip
5437 */
5438 unzip<T>(): LoDashExplicitArrayWrapper<T[]>;
5439 }
5440
5441 //_.unzipWith
5442 interface LoDashStatic {
5443 /**
5444 * This method is like _.unzip except that it accepts an iteratee to specify how regrouped values should be
5445 * combined. The iteratee is bound to thisArg and invoked with four arguments: (accumulator, value, index,
5446 * group).
5447 *
5448 * @param array The array of grouped elements to process.
5449 * @param iteratee The function to combine regrouped values.
5450 * @param thisArg The this binding of iteratee.
5451 * @return Returns the new array of regrouped elements.
5452 */
5453 unzipWith<TArray, TResult>(
5454 array: List<List<TArray>>,
5455 iteratee?: MemoIterator<TArray, TResult>
5456 ): TResult[];
5457 }
5458
5459 interface LoDashImplicitArrayWrapper<T> {
5460 /**
5461 * @see _.unzipWith
5462 */
5463 unzipWith<TArr, TResult>(
5464 iteratee?: MemoIterator<TArr, TResult>
5465 ): LoDashImplicitArrayWrapper<TResult>;
5466 }
5467
5468 interface LoDashImplicitObjectWrapper<T> {
5469 /**
5470 * @see _.unzipWith
5471 */
5472 unzipWith<TArr, TResult>(
5473 iteratee?: MemoIterator<TArr, TResult>
5474 ): LoDashImplicitArrayWrapper<TResult>;
5475 }
5476
5477 //_.without
5478 interface LoDashStatic {
5479 /**
5480 * Creates an array excluding all provided values using SameValueZero for equality comparisons.
5481 *
5482 * @param array The array to filter.
5483 * @param values The values to exclude.
5484 * @return Returns the new array of filtered values.
5485 */
5486 without<T>(
5487 array: List<T>,
5488 ...values: T[]
5489 ): T[];
5490 }
5491
5492 interface LoDashImplicitArrayWrapper<T> {
5493 /**
5494 * @see _.without
5495 */
5496 without(...values: T[]): LoDashImplicitArrayWrapper<T>;
5497 }
5498
5499 interface LoDashImplicitObjectWrapper<T> {
5500 /**
5501 * @see _.without
5502 */
5503 without<T>(...values: T[]): LoDashImplicitArrayWrapper<T>;
5504 }
5505
5506 interface LoDashExplicitArrayWrapper<T> {
5507 /**
5508 * @see _.without
5509 */
5510 without(...values: T[]): LoDashExplicitArrayWrapper<T>;
5511 }
5512
5513 interface LoDashExplicitObjectWrapper<T> {
5514 /**
5515 * @see _.without
5516 */
5517 without<T>(...values: T[]): LoDashExplicitArrayWrapper<T>;
5518 }
5519
5520 //_.xor
5521 interface LoDashStatic {
5522 /**
5523 * Creates an array of unique values that is the symmetric difference of the provided arrays.
5524 *
5525 * @param arrays The arrays to inspect.
5526 * @return Returns the new array of values.
5527 */
5528 xor<T>(...arrays: Array<List<T>>): T[];
5529 }
5530
5531 interface LoDashImplicitArrayWrapper<T> {
5532 /**
5533 * @see _.xor
5534 */
5535 xor(...arrays: Array<List<T>>): LoDashImplicitArrayWrapper<T>;
5536 }
5537
5538 interface LoDashImplicitObjectWrapper<T> {
5539 /**
5540 * @see _.xor
5541 */
5542 xor<T>(...arrays: Array<List<T>>): LoDashImplicitArrayWrapper<T>;
5543 }
5544
5545 interface LoDashExplicitArrayWrapper<T> {
5546 /**
5547 * @see _.xor
5548 */
5549 xor(...arrays: Array<List<T>>): LoDashExplicitArrayWrapper<T>;
5550 }
5551
5552 interface LoDashExplicitObjectWrapper<T> {
5553 /**
5554 * @see _.xor
5555 */
5556 xor<T>(...arrays: Array<List<T>>): LoDashExplicitArrayWrapper<T>;
5557 }
5558
5559 //_.xorBy DUMMY
5560 interface LoDashStatic {
5561 /**
5562 * This method is like `_.xor` except that it accepts `iteratee` which is
5563 * invoked for each element of each `arrays` to generate the criterion by which
5564 * uniqueness is computed. The iteratee is invoked with one argument: (value).
5565 *
5566 * @static
5567 * @memberOf _
5568 * @category Array
5569 * @param {...Array} [arrays] The arrays to inspect.
5570 * @param {Function|Object|string} [iteratee=_.identity] The iteratee invoked per element.
5571 * @returns {Array} Returns the new array of values.
5572 * @example
5573 *
5574 * _.xorBy([2.1, 1.2], [4.3, 2.4], Math.floor);
5575 * // => [1.2, 4.3]
5576 *
5577 * // using the `_.property` iteratee shorthand
5578 * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
5579 * // => [{ 'x': 2 }]
5580 */
5581 xorBy(
5582 array: List<any>,
5583 ...values: any[]
5584 ): any[];
5585 }
5586
5587 //_.xorWith DUMMY
5588 interface LoDashStatic {
5589 /**
5590 * This method is like `_.xor` except that it accepts `comparator` which is
5591 * invoked to compare elements of `arrays`. The comparator is invoked with
5592 * two arguments: (arrVal, othVal).
5593 *
5594 * @static
5595 * @memberOf _
5596 * @category Array
5597 * @param {...Array} [arrays] The arrays to inspect.
5598 * @param {Function} [comparator] The comparator invoked per element.
5599 * @returns {Array} Returns the new array of values.
5600 * @example
5601 *
5602 * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
5603 * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
5604 *
5605 * _.xorWith(objects, others, _.isEqual);
5606 * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
5607 */
5608 xorWith(
5609 array: List<any>,
5610 ...values: any[]
5611 ): any[];
5612 }
5613
5614 //_.zip
5615 interface LoDashStatic {
5616 /**
5617 * Creates an array of grouped elements, the first of which contains the first elements of the given arrays,
5618 * the second of which contains the second elements of the given arrays, and so on.
5619 *
5620 * @param arrays The arrays to process.
5621 * @return Returns the new array of grouped elements.
5622 */
5623 zip<T>(...arrays: Array<List<T>>): T[][];
5624 }
5625
5626 interface LoDashImplicitArrayWrapper<T> {
5627 /**
5628 * @see _.zip
5629 */
5630 zip<T>(...arrays: Array<List<T>>): _.LoDashImplicitArrayWrapper<T[]>;
5631 }
5632
5633 interface LoDashImplicitObjectWrapper<T> {
5634 /**
5635 * @see _.zip
5636 */
5637 zip<T>(...arrays: Array<List<T>>): _.LoDashImplicitArrayWrapper<T[]>;
5638 }
5639
5640 interface LoDashExplicitArrayWrapper<T> {
5641 /**
5642 * @see _.zip
5643 */
5644 zip<T>(...arrays: Array<List<T>>): _.LoDashExplicitArrayWrapper<T[]>;
5645 }
5646
5647 interface LoDashExplicitObjectWrapper<T> {
5648 /**
5649 * @see _.zip
5650 */
5651 zip<T>(...arrays: Array<List<T>>): _.LoDashExplicitArrayWrapper<T[]>;
5652 }
5653
5654 //_.zipObject
5655 interface LoDashStatic {
5656 /**
5657 * This method is like _.fromPairs except that it accepts two arrays, one of property
5658 * identifiers and one of corresponding values.
5659 *
5660 * @param props The property names.
5661 * @param values The property values.
5662 * @return Returns the new object.
5663 */
5664 zipObject<TValues, TResult extends {}>(
5665 props: List<StringRepresentable>|List<List<any>>,
5666 values?: List<TValues>
5667 ): TResult;
5668 /**
5669 * This method is like _.zipObject except that it supports property paths.
5670 *
5671 * @param props The property names.
5672 * @param values The property values.
5673 * @return Returns the new object.
5674 */
5675 zipObjectDeep<TValues, TResult extends {}>(
5676 props: List<StringRepresentable>|List<List<any>>,
5677 values?: List<TValues>
5678 ): TResult;
5679
5680 /**
5681 * @see _.zipObject
5682 */
5683 zipObject<TResult extends {}>(
5684 props: List<StringRepresentable>|List<List<any>>,
5685 values?: List<any>
5686 ): TResult;
5687 /**
5688 * @see _.zipObjectDeep
5689 */
5690 zipObjectDeep<TResult extends {}>(
5691 props: List<StringRepresentable>|List<List<any>>,
5692 values?: List<any>
5693 ): TResult;
5694
5695 /**
5696 * @see _.zipObject
5697 */
5698 zipObject(
5699 props: List<StringRepresentable>|List<List<any>>,
5700 values?: List<any>
5701 ): _.Dictionary<any>;
5702 /**
5703 * @see _.zipObjectDeep
5704 */
5705 zipObjectDepp(
5706 props: List<StringRepresentable>|List<List<any>>,
5707 values?: List<any>
5708 ): _.Dictionary<any>;
5709 }
5710
5711 interface LoDashImplicitArrayWrapper<T> {
5712 /**
5713 * @see _.zipObject
5714 */
5715 zipObject<TValues, TResult extends {}>(
5716 values?: List<TValues>
5717 ): _.LoDashImplicitObjectWrapper<TResult>;
5718 /**
5719 * @see _.zipObjectDeep
5720 */
5721 zipObjectDeep<TValues, TResult extends {}>(
5722 values?: List<TValues>
5723 ): _.LoDashImplicitObjectWrapper<TResult>;
5724
5725 /**
5726 * @see _.zipObject
5727 */
5728 zipObject<TResult extends {}>(
5729 values?: List<any>
5730 ): _.LoDashImplicitObjectWrapper<TResult>;
5731 /**
5732 * @see _.zipObjectDeep
5733 */
5734 zipObjectDeep<TResult extends {}>(
5735 values?: List<any>
5736 ): _.LoDashImplicitObjectWrapper<TResult>;
5737
5738 /**
5739 * @see _.zipObject
5740 */
5741 zipObject(
5742 values?: List<any>
5743 ): _.LoDashImplicitObjectWrapper<_.Dictionary<any>>;
5744 /**
5745 * @see _.zipObjectDeep
5746 */
5747 zipObjectDeep(
5748 values?: List<any>
5749 ): _.LoDashImplicitObjectWrapper<_.Dictionary<any>>;
5750 }
5751
5752 interface LoDashImplicitObjectWrapper<T> {
5753 /**
5754 * @see _.zipObject
5755 */
5756 zipObject<TValues, TResult extends {}>(
5757 values?: List<TValues>
5758 ): _.LoDashImplicitObjectWrapper<TResult>;
5759 /**
5760 * @see _.zipObjectDeep
5761 */
5762 zipObjectDeep<TValues, TResult extends {}>(
5763 values?: List<TValues>
5764 ): _.LoDashImplicitObjectWrapper<TResult>;
5765
5766 /**
5767 * @see _.zipObject
5768 */
5769 zipObject<TResult extends {}>(
5770 values?: List<any>
5771 ): _.LoDashImplicitObjectWrapper<TResult>;
5772 /**
5773 * @see _.zipObjectDeep
5774 */
5775 zipObjectDeep<TResult extends {}>(
5776 values?: List<any>
5777 ): _.LoDashImplicitObjectWrapper<TResult>;
5778
5779 /**
5780 * @see _.zipObject
5781 */
5782 zipObject(
5783 values?: List<any>
5784 ): _.LoDashImplicitObjectWrapper<_.Dictionary<any>>;
5785 /**
5786 * @see _.zipObjectDeep
5787 */
5788 zipObjectDeep(
5789 values?: List<any>
5790 ): _.LoDashImplicitObjectWrapper<_.Dictionary<any>>;
5791 }
5792
5793 interface LoDashExplicitArrayWrapper<T> {
5794 /**
5795 * @see _.zipObject
5796 */
5797 zipObject<TValues, TResult extends {}>(
5798 values?: List<TValues>
5799 ): _.LoDashExplicitObjectWrapper<TResult>;
5800 /**
5801 * @see _.zipObjectDeep
5802 */
5803 zipObjectDeep<TValues, TResult extends {}>(
5804 values?: List<TValues>
5805 ): _.LoDashExplicitObjectWrapper<TResult>;
5806
5807 /**
5808 * @see _.zipObject
5809 */
5810 zipObject<TResult extends {}>(
5811 values?: List<any>
5812 ): _.LoDashExplicitObjectWrapper<TResult>;
5813 /**
5814 * @see _.zipObjectDeep
5815 */
5816 zipObjectDeep<TResult extends {}>(
5817 values?: List<any>
5818 ): _.LoDashExplicitObjectWrapper<TResult>;
5819
5820 /**
5821 * @see _.zipObject
5822 */
5823 zipObject(
5824 values?: List<any>
5825 ): _.LoDashExplicitObjectWrapper<_.Dictionary<any>>;
5826 /**
5827 * @see _.zipObjectDeep
5828 */
5829 zipObjectDeep(
5830 values?: List<any>
5831 ): _.LoDashExplicitObjectWrapper<_.Dictionary<any>>;
5832 }
5833
5834 interface LoDashExplicitObjectWrapper<T> {
5835 /**
5836 * @see _.zipObject
5837 */
5838 zipObject<TValues, TResult extends {}>(
5839 values?: List<TValues>
5840 ): _.LoDashExplicitObjectWrapper<TResult>;
5841 /**
5842 * @see _.zipObjectDeep
5843 */
5844 zipObjectDeep<TValues, TResult extends {}>(
5845 values?: List<TValues>
5846 ): _.LoDashExplicitObjectWrapper<TResult>;
5847
5848 /**
5849 * @see _.zipObject
5850 */
5851 zipObject<TResult extends {}>(
5852 values?: List<any>
5853 ): _.LoDashExplicitObjectWrapper<TResult>;
5854 /**
5855 * @see _.zipObjectDeep
5856 */
5857 zipObjectDeep<TResult extends {}>(
5858 values?: List<any>
5859 ): _.LoDashExplicitObjectWrapper<TResult>;
5860
5861 /**
5862 * @see _.zipObject
5863 */
5864 zipObject(
5865 values?: List<any>
5866 ): _.LoDashExplicitObjectWrapper<_.Dictionary<any>>;
5867 /**
5868 * @see _.zipObjectDeep
5869 */
5870 zipObjectDeep(
5871 values?: List<any>
5872 ): _.LoDashExplicitObjectWrapper<_.Dictionary<any>>;
5873 }
5874
5875 //_.zipWith
5876 interface LoDashStatic {
5877 /**
5878 * This method is like _.zip except that it accepts an iteratee to specify how grouped values should be
5879 * combined. The iteratee is bound to thisArg and invoked with four arguments: (accumulator, value, index,
5880 * group).
5881 * @param {...Array} [arrays] The arrays to process.
5882 * @param {Function} [iteratee] The function to combine grouped values.
5883 * @param {*} [thisArg] The `this` binding of `iteratee`.
5884 * @return Returns the new array of grouped elements.
5885 */
5886 zipWith<TResult>(...args: any[]): TResult[];
5887 }
5888
5889 interface LoDashImplicitArrayWrapper<T> {
5890 /**
5891 * @see _.zipWith
5892 */
5893 zipWith<TResult>(...args: any[]): LoDashImplicitArrayWrapper<TResult>;
5894 }
5895
5896 /*********
5897 * Chain *
5898 *********/
5899
5900 //_.chain
5901 interface LoDashStatic {
5902 /**
5903 * Creates a lodash object that wraps value with explicit method chaining enabled.
5904 *
5905 * @param value The value to wrap.
5906 * @return Returns the new lodash wrapper instance.
5907 */
5908 chain(value: number): LoDashExplicitWrapper<number>;
5909 chain(value: string): LoDashExplicitWrapper<string>;
5910 chain(value: boolean): LoDashExplicitWrapper<boolean>;
5911 chain<T>(value: T[]): LoDashExplicitArrayWrapper<T>;
5912 chain<T extends {}>(value: T): LoDashExplicitObjectWrapper<T>;
5913 chain(value: any): LoDashExplicitWrapper<any>;
5914 }
5915
5916 interface LoDashImplicitWrapper<T> {
5917 /**
5918 * @see _.chain
5919 */
5920 chain(): LoDashExplicitWrapper<T>;
5921 }
5922
5923 interface LoDashImplicitArrayWrapper<T> {
5924 /**
5925 * @see _.chain
5926 */
5927 chain(): LoDashExplicitArrayWrapper<T>;
5928 }
5929
5930 interface LoDashImplicitObjectWrapper<T> {
5931 /**
5932 * @see _.chain
5933 */
5934 chain(): LoDashExplicitObjectWrapper<T>;
5935 }
5936
5937 interface LoDashExplicitWrapperBase<T, TWrapper> {
5938 /**
5939 * @see _.chain
5940 */
5941 chain(): TWrapper;
5942 }
5943
5944 //_.tap
5945 interface LoDashStatic {
5946 /**
5947 * This method invokes interceptor and returns value. The interceptor is bound to thisArg and invoked with one
5948 * argument; (value). The purpose of this method is to "tap into" a method chain in order to perform operations
5949 * on intermediate results within the chain.
5950 *
5951 * @param value The value to provide to interceptor.
5952 * @param interceptor The function to invoke.
5953 * @parem thisArg The this binding of interceptor.
5954 * @return Returns value.
5955 **/
5956 tap<T>(
5957 value: T,
5958 interceptor: (value: T) => void
5959 ): T;
5960 }
5961
5962 interface LoDashImplicitWrapperBase<T, TWrapper> {
5963 /**
5964 * @see _.tap
5965 */
5966 tap(
5967 interceptor: (value: T) => void
5968 ): TWrapper;
5969 }
5970
5971 interface LoDashExplicitWrapperBase<T, TWrapper> {
5972 /**
5973 * @see _.tap
5974 */
5975 tap(
5976 interceptor: (value: T) => void
5977 ): TWrapper;
5978 }
5979
5980 //_.thru
5981 interface LoDashStatic {
5982 /**
5983 * This method is like _.tap except that it returns the result of interceptor.
5984 *
5985 * @param value The value to provide to interceptor.
5986 * @param interceptor The function to invoke.
5987 * @param thisArg The this binding of interceptor.
5988 * @return Returns the result of interceptor.
5989 */
5990 thru<T, TResult>(
5991 value: T,
5992 interceptor: (value: T) => TResult
5993 ): TResult;
5994 }
5995
5996 interface LoDashImplicitWrapperBase<T, TWrapper> {
5997 /**
5998 * @see _.thru
5999 */
6000 thru<TResult extends number>(
6001 interceptor: (value: T) => TResult): LoDashImplicitWrapper<TResult>;
6002
6003 /**
6004 * @see _.thru
6005 */
6006 thru<TResult extends string>(
6007 interceptor: (value: T) => TResult): LoDashImplicitWrapper<TResult>;
6008
6009 /**
6010 * @see _.thru
6011 */
6012 thru<TResult extends boolean>(
6013 interceptor: (value: T) => TResult): LoDashImplicitWrapper<TResult>;
6014
6015 /**
6016 * @see _.thru
6017 */
6018 thru<TResult extends {}>(
6019 interceptor: (value: T) => TResult): LoDashImplicitObjectWrapper<TResult>;
6020
6021 /**
6022 * @see _.thru
6023 */
6024 thru<TResult>(
6025 interceptor: (value: T) => TResult[]): LoDashImplicitArrayWrapper<TResult>;
6026 }
6027
6028 interface LoDashExplicitWrapperBase<T, TWrapper> {
6029 /**
6030 * @see _.thru
6031 */
6032 thru<TResult extends number>(
6033 interceptor: (value: T) => TResult
6034 ): LoDashExplicitWrapper<TResult>;
6035
6036 /**
6037 * @see _.thru
6038 */
6039 thru<TResult extends string>(
6040 interceptor: (value: T) => TResult
6041 ): LoDashExplicitWrapper<TResult>;
6042
6043 /**
6044 * @see _.thru
6045 */
6046 thru<TResult extends boolean>(
6047 interceptor: (value: T) => TResult
6048 ): LoDashExplicitWrapper<TResult>;
6049
6050 /**
6051 * @see _.thru
6052 */
6053 thru<TResult extends {}>(
6054 interceptor: (value: T) => TResult
6055 ): LoDashExplicitObjectWrapper<TResult>;
6056
6057 /**
6058 * @see _.thru
6059 */
6060 thru<TResult>(
6061 interceptor: (value: T) => TResult[]
6062 ): LoDashExplicitArrayWrapper<TResult>;
6063 }
6064
6065 //_.prototype.commit
6066 interface LoDashImplicitWrapperBase<T, TWrapper> {
6067 /**
6068 * Executes the chained sequence and returns the wrapped result.
6069 *
6070 * @return Returns the new lodash wrapper instance.
6071 */
6072 commit(): TWrapper;
6073 }
6074
6075 interface LoDashExplicitWrapperBase<T, TWrapper> {
6076 /**
6077 * @see _.commit
6078 */
6079 commit(): TWrapper;
6080 }
6081
6082 //_.prototype.concat
6083 interface LoDashImplicitWrapperBase<T, TWrapper> {
6084 /**
6085 * Creates a new array joining a wrapped array with any additional arrays and/or values.
6086 *
6087 * @param items
6088 * @return Returns the new concatenated array.
6089 */
6090 concat<TItem>(...items: Array<Many<TItem>>): LoDashImplicitArrayWrapper<TItem>;
6091
6092 /**
6093 * @see _.concat
6094 */
6095 concat(...items: Array<Many<T>>): LoDashImplicitArrayWrapper<T>;
6096 }
6097
6098 interface LoDashExplicitWrapperBase<T, TWrapper> {
6099 /**
6100 * @see _.concat
6101 */
6102 concat<TItem>(...items: Array<Many<TItem>>): LoDashExplicitArrayWrapper<TItem>;
6103
6104 /**
6105 * @see _.concat
6106 */
6107 concat(...items: Array<Many<T>>): LoDashExplicitArrayWrapper<T>;
6108 }
6109
6110 //_.prototype.plant
6111 interface LoDashImplicitWrapperBase<T, TWrapper> {
6112 /**
6113 * Creates a clone of the chained sequence planting value as the wrapped value.
6114 * @param value The value to plant as the wrapped value.
6115 * @return Returns the new lodash wrapper instance.
6116 */
6117 plant(value: number): LoDashImplicitWrapper<number>;
6118
6119 /**
6120 * @see _.plant
6121 */
6122 plant(value: string): LoDashImplicitStringWrapper;
6123
6124 /**
6125 * @see _.plant
6126 */
6127 plant(value: boolean): LoDashImplicitWrapper<boolean>;
6128
6129 /**
6130 * @see _.plant
6131 */
6132 plant(value: number[]): LoDashImplicitNumberArrayWrapper;
6133
6134 /**
6135 * @see _.plant
6136 */
6137 plant<T>(value: T[]): LoDashImplicitArrayWrapper<T>;
6138
6139 /**
6140 * @see _.plant
6141 */
6142 plant<T extends {}>(value: T): LoDashImplicitObjectWrapper<T>;
6143
6144 /**
6145 * @see _.plant
6146 */
6147 plant(value: any): LoDashImplicitWrapper<any>;
6148 }
6149
6150 interface LoDashExplicitWrapperBase<T, TWrapper> {
6151 /**
6152 * @see _.plant
6153 */
6154 plant(value: number): LoDashExplicitWrapper<number>;
6155
6156 /**
6157 * @see _.plant
6158 */
6159 plant(value: string): LoDashExplicitStringWrapper;
6160
6161 /**
6162 * @see _.plant
6163 */
6164 plant(value: boolean): LoDashExplicitWrapper<boolean>;
6165
6166 /**
6167 * @see _.plant
6168 */
6169 plant(value: number[]): LoDashExplicitNumberArrayWrapper;
6170
6171 /**
6172 * @see _.plant
6173 */
6174 plant<T>(value: T[]): LoDashExplicitArrayWrapper<T>;
6175
6176 /**
6177 * @see _.plant
6178 */
6179 plant<T extends {}>(value: T): LoDashExplicitObjectWrapper<T>;
6180
6181 /**
6182 * @see _.plant
6183 */
6184 plant(value: any): LoDashExplicitWrapper<any>;
6185 }
6186
6187 //_.prototype.reverse
6188 interface LoDashImplicitArrayWrapper<T> {
6189 /**
6190 * Reverses the wrapped array so the first element becomes the last, the second element becomes the second to
6191 * last, and so on.
6192 *
6193 * Note: This method mutates the wrapped array.
6194 *
6195 * @return Returns the new reversed lodash wrapper instance.
6196 */
6197 reverse(): LoDashImplicitArrayWrapper<T>;
6198 }
6199
6200 interface LoDashExplicitArrayWrapper<T> {
6201 /**
6202 * @see _.reverse
6203 */
6204 reverse(): LoDashExplicitArrayWrapper<T>;
6205 }
6206
6207 //_.prototype.toJSON
6208 interface LoDashWrapperBase<T, TWrapper> {
6209 /**
6210 * @see _.value
6211 */
6212 toJSON(): T;
6213 }
6214
6215 //_.prototype.toString
6216 interface LoDashWrapperBase<T, TWrapper> {
6217 /**
6218 * Produces the result of coercing the unwrapped value to a string.
6219 *
6220 * @return Returns the coerced string value.
6221 */
6222 toString(): string;
6223 }
6224
6225 //_.prototype.value
6226 interface LoDashWrapperBase<T, TWrapper> {
6227 /**
6228 * Executes the chained sequence to extract the unwrapped value.
6229 *
6230 * @alias _.toJSON, _.valueOf
6231 *
6232 * @return Returns the resolved unwrapped value.
6233 */
6234 value(): T;
6235 }
6236
6237 //_.valueOf
6238 interface LoDashWrapperBase<T, TWrapper> {
6239 /**
6240 * @see _.value
6241 */
6242 valueOf(): T;
6243 }
6244
6245 /**************
6246 * Collection *
6247 **************/
6248
6249 //_.at
6250 interface LoDashStatic {
6251 /**
6252 * Creates an array of elements corresponding to the given keys, or indexes, of collection. Keys may be
6253 * specified as individual arguments or as arrays of keys.
6254 *
6255 * @param collection The collection to iterate over.
6256 * @param props The property names or indexes of elements to pick, specified individually or in arrays.
6257 * @return Returns the new array of picked elements.
6258 */
6259 at<T>(
6260 collection: List<T>|Dictionary<T>,
6261 ...props: Array<Many<number|string>>
6262 ): T[];
6263 }
6264
6265 interface LoDashImplicitArrayWrapper<T> {
6266 /**
6267 * @see _.at
6268 */
6269 at(...props: Array<Many<number|string>>): LoDashImplicitArrayWrapper<T>;
6270 }
6271
6272 interface LoDashImplicitObjectWrapper<T> {
6273 /**
6274 * @see _.at
6275 */
6276 at<T>(...props: Array<Many<number|string>>): LoDashImplicitArrayWrapper<T>;
6277 }
6278
6279 interface LoDashExplicitArrayWrapper<T> {
6280 /**
6281 * @see _.at
6282 */
6283 at(...props: Array<Many<number|string>>): LoDashExplicitArrayWrapper<T>;
6284 }
6285
6286 interface LoDashExplicitObjectWrapper<T> {
6287 /**
6288 * @see _.at
6289 */
6290 at<T>(...props: Array<Many<number|string>>): LoDashExplicitArrayWrapper<T>;
6291 }
6292
6293 //_.countBy
6294 interface LoDashStatic {
6295 /**
6296 * Creates an object composed of keys generated from the results of running each element of collection through
6297 * iteratee. The corresponding value of each key is the number of times the key was returned by iteratee. The
6298 * iteratee is bound to thisArg and invoked with three arguments:
6299 * (value, index|key, collection).
6300 *
6301 * If a property name is provided for iteratee the created _.property style callback returns the property
6302 * value of the given element.
6303 *
6304 * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for
6305 * elements that have a matching property value, else false.
6306 *
6307 * If an object is provided for iteratee the created _.matches style callback returns true for elements that
6308 * have the properties of the given object, else false.
6309 *
6310 * @param collection The collection to iterate over.
6311 * @param iteratee The function invoked per iteration.
6312 * @param thisArg The this binding of iteratee.
6313 * @return Returns the composed aggregate object.
6314 */
6315 countBy<T>(
6316 collection: List<T>,
6317 iteratee?: ListIterator<T, any>
6318 ): Dictionary<number>;
6319
6320 /**
6321 * @see _.countBy
6322 */
6323 countBy<T>(
6324 collection: Dictionary<T>,
6325 iteratee?: DictionaryIterator<T, any>
6326 ): Dictionary<number>;
6327
6328 /**
6329 * @see _.countBy
6330 */
6331 countBy<T>(
6332 collection: NumericDictionary<T>,
6333 iteratee?: NumericDictionaryIterator<T, any>
6334 ): Dictionary<number>;
6335
6336 /**
6337 * @see _.countBy
6338 */
6339 countBy<T>(
6340 collection: List<T>|Dictionary<T>|NumericDictionary<T>,
6341 iteratee?: string
6342 ): Dictionary<number>;
6343
6344 /**
6345 * @see _.countBy
6346 */
6347 countBy<W, T>(
6348 collection: List<T>|Dictionary<T>|NumericDictionary<T>,
6349 iteratee?: W
6350 ): Dictionary<number>;
6351
6352 /**
6353 * @see _.countBy
6354 */
6355 countBy<T>(
6356 collection: List<T>|Dictionary<T>|NumericDictionary<T>,
6357 iteratee?: Object
6358 ): Dictionary<number>;
6359 }
6360
6361 interface LoDashImplicitWrapper<T> {
6362 /**
6363 * @see _.countBy
6364 */
6365 countBy(
6366 iteratee?: ListIterator<T, any>
6367 ): LoDashImplicitObjectWrapper<Dictionary<number>>;
6368 }
6369
6370 interface LoDashImplicitArrayWrapper<T> {
6371 /**
6372 * @see _.countBy
6373 */
6374 countBy(
6375 iteratee?: ListIterator<T, any>
6376 ): LoDashImplicitObjectWrapper<Dictionary<number>>;
6377
6378 /**
6379 * @see _.countBy
6380 */
6381 countBy(
6382 iteratee?: string
6383 ): LoDashImplicitObjectWrapper<Dictionary<number>>;
6384
6385 /**
6386 * @see _.countBy
6387 */
6388 countBy<W>(
6389 iteratee?: W
6390 ): LoDashImplicitObjectWrapper<Dictionary<number>>;
6391 }
6392
6393 interface LoDashImplicitObjectWrapper<T> {
6394 /**
6395 * @see _.countBy
6396 */
6397 countBy<T>(
6398 iteratee?: ListIterator<T, any>|DictionaryIterator<T, any>|NumericDictionaryIterator<T, any>
6399 ): LoDashImplicitObjectWrapper<Dictionary<number>>;
6400
6401 /**
6402 * @see _.countBy
6403 */
6404 countBy(
6405 iteratee?: string
6406 ): LoDashImplicitObjectWrapper<Dictionary<number>>;
6407
6408 /**
6409 * @see _.countBy
6410 */
6411 countBy<W>(
6412 iteratee?: W
6413 ): LoDashImplicitObjectWrapper<Dictionary<number>>;
6414 }
6415
6416 interface LoDashExplicitWrapper<T> {
6417 /**
6418 * @see _.countBy
6419 */
6420 countBy(
6421 iteratee?: ListIterator<T, any>
6422 ): LoDashExplicitObjectWrapper<Dictionary<number>>;
6423 }
6424
6425 interface LoDashExplicitArrayWrapper<T> {
6426 /**
6427 * @see _.countBy
6428 */
6429 countBy(
6430 iteratee?: ListIterator<T, any>
6431 ): LoDashExplicitObjectWrapper<Dictionary<number>>;
6432
6433 /**
6434 * @see _.countBy
6435 */
6436 countBy(
6437 iteratee?: string
6438 ): LoDashExplicitObjectWrapper<Dictionary<number>>;
6439
6440 /**
6441 * @see _.countBy
6442 */
6443 countBy<W>(
6444 iteratee?: W
6445 ): LoDashExplicitObjectWrapper<Dictionary<number>>;
6446 }
6447
6448 interface LoDashExplicitObjectWrapper<T> {
6449 /**
6450 * @see _.countBy
6451 */
6452 countBy<T>(
6453 iteratee?: ListIterator<T, any>|DictionaryIterator<T, any>|NumericDictionaryIterator<T, any>
6454 ): LoDashExplicitObjectWrapper<Dictionary<number>>;
6455
6456 /**
6457 * @see _.countBy
6458 */
6459 countBy(
6460 iteratee?: string
6461 ): LoDashExplicitObjectWrapper<Dictionary<number>>;
6462
6463 /**
6464 * @see _.countBy
6465 */
6466 countBy<W>(
6467 iteratee?: W
6468 ): LoDashExplicitObjectWrapper<Dictionary<number>>;
6469 }
6470
6471 //_.each
6472 interface LoDashStatic {
6473 /**
6474 * @see _.forEach
6475 */
6476 each<T>(
6477 collection: T[],
6478 iteratee?: ListIterator<T, any>
6479 ): T[];
6480
6481 /**
6482 * @see _.forEach
6483 */
6484 each<T>(
6485 collection: List<T>,
6486 iteratee?: ListIterator<T, any>
6487 ): List<T>;
6488
6489 /**
6490 * @see _.forEach
6491 */
6492 each<T>(
6493 collection: Dictionary<T>,
6494 iteratee?: DictionaryIterator<T, any>
6495 ): Dictionary<T>;
6496
6497 /**
6498 * @see _.forEach
6499 */
6500 each<T extends {}>(
6501 collection: T,
6502 iteratee?: ObjectIterator<any, any>
6503 ): T;
6504
6505 /**
6506 * @see _.forEach
6507 */
6508 each<T extends {}, TValue>(
6509 collection: T,
6510 iteratee?: ObjectIterator<TValue, any>
6511 ): T;
6512 }
6513
6514 interface LoDashImplicitWrapper<T> {
6515 /**
6516 * @see _.forEach
6517 */
6518 each(
6519 iteratee: ListIterator<string, any>
6520 ): LoDashImplicitWrapper<string>;
6521 }
6522
6523 interface LoDashImplicitArrayWrapper<T> {
6524 /**
6525 * @see _.forEach
6526 */
6527 each(
6528 iteratee: ListIterator<T, any>
6529 ): LoDashImplicitArrayWrapper<T>;
6530 }
6531
6532 interface LoDashImplicitObjectWrapper<T> {
6533 /**
6534 * @see _.forEach
6535 */
6536 each<TValue>(
6537 iteratee?: ListIterator<TValue, any>|DictionaryIterator<TValue, any>
6538 ): LoDashImplicitObjectWrapper<T>;
6539 }
6540
6541 interface LoDashExplicitWrapper<T> {
6542 /**
6543 * @see _.forEach
6544 */
6545 each(
6546 iteratee: ListIterator<string, any>
6547 ): LoDashExplicitWrapper<string>;
6548 }
6549
6550 interface LoDashExplicitArrayWrapper<T> {
6551 /**
6552 * @see _.forEach
6553 */
6554 each(
6555 iteratee: ListIterator<T, any>
6556 ): LoDashExplicitArrayWrapper<T>;
6557 }
6558
6559 interface LoDashExplicitObjectWrapper<T> {
6560 /**
6561 * @see _.forEach
6562 */
6563 each<TValue>(
6564 iteratee?: ListIterator<TValue, any>|DictionaryIterator<TValue, any>
6565 ): LoDashExplicitObjectWrapper<T>;
6566 }
6567
6568 //_.eachRight
6569 interface LoDashStatic {
6570 /**
6571 * @see _.forEachRight
6572 */
6573 eachRight<T>(
6574 collection: T[],
6575 iteratee?: ListIterator<T, any>
6576 ): T[];
6577
6578 /**
6579 * @see _.forEachRight
6580 */
6581 eachRight<T>(
6582 collection: List<T>,
6583 iteratee?: ListIterator<T, any>
6584 ): List<T>;
6585
6586 /**
6587 * @see _.forEachRight
6588 */
6589 eachRight<T>(
6590 collection: Dictionary<T>,
6591 iteratee?: DictionaryIterator<T, any>
6592 ): Dictionary<T>;
6593
6594 /**
6595 * @see _.forEachRight
6596 */
6597 eachRight<T extends {}>(
6598 collection: T,
6599 iteratee?: ObjectIterator<any, any>
6600 ): T;
6601
6602 /**
6603 * @see _.forEachRight
6604 */
6605 eachRight<T extends {}, TValue>(
6606 collection: T,
6607 iteratee?: ObjectIterator<TValue, any>
6608 ): T;
6609 }
6610
6611 interface LoDashImplicitWrapper<T> {
6612 /**
6613 * @see _.forEachRight
6614 */
6615 eachRight(
6616 iteratee: ListIterator<string, any>
6617 ): LoDashImplicitWrapper<string>;
6618 }
6619
6620 interface LoDashImplicitArrayWrapper<T> {
6621 /**
6622 * @see _.forEachRight
6623 */
6624 eachRight(
6625 iteratee: ListIterator<T, any>
6626 ): LoDashImplicitArrayWrapper<T>;
6627 }
6628
6629 interface LoDashImplicitObjectWrapper<T> {
6630 /**
6631 * @see _.forEachRight
6632 */
6633 eachRight<TValue>(
6634 iteratee?: ListIterator<TValue, any>|DictionaryIterator<TValue, any>
6635 ): LoDashImplicitObjectWrapper<T>;
6636 }
6637
6638 interface LoDashExplicitWrapper<T> {
6639 /**
6640 * @see _.forEachRight
6641 */
6642 eachRight(
6643 iteratee: ListIterator<string, any>
6644 ): LoDashExplicitWrapper<string>;
6645 }
6646
6647 interface LoDashExplicitArrayWrapper<T> {
6648 /**
6649 * @see _.forEachRight
6650 */
6651 eachRight(
6652 iteratee: ListIterator<T, any>
6653 ): LoDashExplicitArrayWrapper<T>;
6654 }
6655
6656 interface LoDashExplicitObjectWrapper<T> {
6657 /**
6658 * @see _.forEachRight
6659 */
6660 eachRight<TValue>(
6661 iteratee?: ListIterator<TValue, any>|DictionaryIterator<TValue, any>
6662 ): LoDashExplicitObjectWrapper<T>;
6663 }
6664
6665 //_.every
6666 interface LoDashStatic {
6667 /**
6668 * Checks if predicate returns truthy for all elements of collection. Iteration is stopped once predicate
6669 * returns falsey. The predicate is invoked with three arguments: (value, index|key, collection).
6670 *
6671 * @param collection The collection to iterate over.
6672 * @param predicate The function invoked per iteration.
6673 * @return Returns true if all elements pass the predicate check, else false.
6674 */
6675 every<T>(
6676 collection: List<T>,
6677 predicate?: ListIterator<T, boolean>
6678 ): boolean;
6679
6680 /**
6681 * @see _.every
6682 */
6683 every<T>(
6684 collection: Dictionary<T>,
6685 predicate?: DictionaryIterator<T, boolean>
6686 ): boolean;
6687
6688 /**
6689 * @see _.every
6690 */
6691 every<T>(
6692 collection: NumericDictionary<T>,
6693 predicate?: NumericDictionaryIterator<T, boolean>
6694 ): boolean;
6695
6696 /**
6697 * @see _.every
6698 */
6699 every<T>(
6700 collection: List<T>|Dictionary<T>|NumericDictionary<T>,
6701 predicate?: string|any[]
6702 ): boolean;
6703
6704 /**
6705 * @see _.every
6706 */
6707 every<T>(
6708 collection: List<T>|Dictionary<T>|NumericDictionary<T>,
6709 predicate?: PartialObject<T>
6710 ): boolean;
6711 }
6712
6713 interface LoDashImplicitArrayWrapper<T> {
6714 /**
6715 * @see _.every
6716 */
6717 every(
6718 predicate?: ListIterator<T, boolean>|NumericDictionaryIterator<T, boolean>
6719 ): boolean;
6720
6721 /**
6722 * @see _.every
6723 */
6724 every(
6725 predicate?: string|any[]
6726 ): boolean;
6727
6728 /**
6729 * @see _.every
6730 */
6731 every(
6732 predicate?: PartialObject<T>
6733 ): boolean;
6734 }
6735
6736 interface LoDashImplicitObjectWrapper<T> {
6737 /**
6738 * @see _.every
6739 */
6740 every<TResult>(
6741 predicate?: ListIterator<TResult, boolean>|DictionaryIterator<TResult, boolean>|NumericDictionaryIterator<T, boolean>
6742 ): boolean;
6743
6744 /**
6745 * @see _.every
6746 */
6747 every(
6748 predicate?: string|any[]
6749 ): boolean;
6750
6751 /**
6752 * @see _.every
6753 */
6754 every<TResult>(
6755 predicate?: PartialObject<TResult>
6756 ): boolean;
6757 }
6758
6759 interface LoDashExplicitArrayWrapper<T> {
6760 /**
6761 * @see _.every
6762 */
6763 every(
6764 predicate?: ListIterator<T, boolean>|NumericDictionaryIterator<T, boolean>
6765 ): LoDashExplicitWrapper<boolean>;
6766
6767 /**
6768 * @see _.every
6769 */
6770 every(
6771 predicate?: string|any[]
6772 ): LoDashExplicitWrapper<boolean>;
6773
6774 /**
6775 * @see _.every
6776 */
6777 every(
6778 predicate?: PartialObject<T>
6779 ): LoDashExplicitWrapper<boolean>;
6780 }
6781
6782 interface LoDashExplicitObjectWrapper<T> {
6783 /**
6784 * @see _.every
6785 */
6786 every<TResult>(
6787 predicate?: ListIterator<TResult, boolean>|DictionaryIterator<TResult, boolean>|NumericDictionaryIterator<T, boolean>
6788 ): LoDashExplicitWrapper<boolean>;
6789
6790 /**
6791 * @see _.every
6792 */
6793 every(
6794 predicate?: string|any[]
6795 ): LoDashExplicitWrapper<boolean>;
6796
6797 /**
6798 * @see _.every
6799 */
6800 every<TResult>(
6801 predicate?: PartialObject<TResult>
6802 ): LoDashExplicitWrapper<boolean>;
6803 }
6804
6805 //_.filter
6806 interface LoDashStatic {
6807 /**
6808 * Iterates over elements of collection, returning an array of all elements predicate returns truthy for. The
6809 * predicate is bound to thisArg and invoked with three arguments: (value, index|key, collection).
6810 *
6811 * If a property name is provided for predicate the created _.property style callback returns the property
6812 * value of the given element.
6813 *
6814 * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for
6815 * elements that have a matching property value, else false.
6816 *
6817 * If an object is provided for predicate the created _.matches style callback returns true for elements that
6818 * have the properties of the given object, else false.
6819 *
6820 * @param collection The collection to iterate over.
6821 * @param predicate The function invoked per iteration.
6822 * @param thisArg The this binding of predicate.
6823 * @return Returns the new filtered array.
6824 */
6825 filter<T>(
6826 collection: List<T>,
6827 predicate?: ListIterator<T, boolean>
6828 ): T[];
6829
6830 /**
6831 * @see _.filter
6832 */
6833 filter<T>(
6834 collection: Dictionary<T>,
6835 predicate?: DictionaryIterator<T, boolean>
6836 ): T[];
6837
6838 /**
6839 * @see _.filter
6840 */
6841 filter(
6842 collection: string,
6843 predicate?: StringIterator<boolean>
6844 ): string[];
6845
6846 /**
6847 * @see _.filter
6848 */
6849 filter<T>(
6850 collection: List<T>|Dictionary<T>,
6851 predicate: string|RegExp
6852 ): T[];
6853
6854 /**
6855 * @see _.filter
6856 */
6857 filter<T>(
6858 collection: List<T>|Dictionary<T>,
6859 predicate: PartialObject<T>
6860 ): T[];
6861 }
6862
6863 interface LoDashImplicitWrapper<T> {
6864 /**
6865 * @see _.filter
6866 */
6867 filter(
6868 predicate?: StringIterator<boolean>
6869 ): LoDashImplicitArrayWrapper<string>;
6870 }
6871
6872 interface LoDashImplicitArrayWrapper<T> {
6873 /**
6874 * @see _.filter
6875 */
6876 filter(
6877 predicate: ListIterator<T, boolean>
6878 ): LoDashImplicitArrayWrapper<T>;
6879
6880 /**
6881 * @see _.filter
6882 */
6883 filter(
6884 predicate: string|RegExp
6885 ): LoDashImplicitArrayWrapper<T>;
6886
6887 /**
6888 * @see _.filter
6889 */
6890 filter(predicate: PartialObject<T>): LoDashImplicitArrayWrapper<T>;
6891 }
6892
6893 interface LoDashImplicitObjectWrapper<T> {
6894 /**
6895 * @see _.filter
6896 */
6897 filter<T>(
6898 predicate: ListIterator<T, boolean>|DictionaryIterator<T, boolean>
6899 ): LoDashImplicitArrayWrapper<T>;
6900
6901 /**
6902 * @see _.filter
6903 */
6904 filter<T>(
6905 predicate: string|RegExp
6906 ): LoDashImplicitArrayWrapper<T>;
6907
6908 /**
6909 * @see _.filter
6910 */
6911 filter<T>(predicate: PartialObject<T>): LoDashImplicitArrayWrapper<T>;
6912 }
6913
6914 interface LoDashExplicitWrapper<T> {
6915 /**
6916 * @see _.filter
6917 */
6918 filter(
6919 predicate?: StringIterator<boolean>
6920 ): LoDashExplicitArrayWrapper<string>;
6921 }
6922
6923 interface LoDashExplicitArrayWrapper<T> {
6924 /**
6925 * @see _.filter
6926 */
6927 filter(
6928 predicate: ListIterator<T, boolean>
6929 ): LoDashExplicitArrayWrapper<T>;
6930
6931 /**
6932 * @see _.filter
6933 */
6934 filter(
6935 predicate: string|RegExp
6936 ): LoDashExplicitArrayWrapper<T>;
6937
6938 /**
6939 * @see _.filter
6940 */
6941 filter(predicate: PartialObject<T>): LoDashExplicitArrayWrapper<T>;
6942 }
6943
6944 interface LoDashExplicitObjectWrapper<T> {
6945 /**
6946 * @see _.filter
6947 */
6948 filter<T>(
6949 predicate: ListIterator<T, boolean>|DictionaryIterator<T, boolean>
6950 ): LoDashExplicitArrayWrapper<T>;
6951
6952 /**
6953 * @see _.filter
6954 */
6955 filter<T>(
6956 predicate: string|RegExp
6957 ): LoDashExplicitArrayWrapper<T>;
6958
6959 /**
6960 * @see _.filter
6961 */
6962 filter<T>(predicate: PartialObject<T>): LoDashExplicitArrayWrapper<T>;
6963 }
6964
6965 //_.find
6966 interface LoDashStatic {
6967 /**
6968 * Iterates over elements of collection, returning the first element predicate returns truthy for.
6969 * The predicate is bound to thisArg and invoked with three arguments: (value, index|key, collection).
6970 *
6971 * If a property name is provided for predicate the created _.property style callback returns the property
6972 * value of the given element.
6973 *
6974 * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for
6975 * elements that have a matching property value, else false.
6976 *
6977 * If an object is provided for predicate the created _.matches style callback returns true for elements that
6978 * have the properties of the given object, else false.
6979 *
6980 * @param collection The collection to search.
6981 * @param predicate The function invoked per iteration.
6982 * @param fromIndex The index to search from.
6983 * @return Returns the matched element, else undefined.
6984 */
6985 find<T>(
6986 collection: List<T>,
6987 predicate?: ListIterator<T, boolean>,
6988 fromIndex?: number
6989 ): T|undefined;
6990
6991 /**
6992 * @see _.find
6993 */
6994 find<T>(
6995 collection: Dictionary<T>,
6996 predicate?: DictionaryIterator<T, boolean>,
6997 fromIndex?: number
6998 ): T|undefined;
6999
7000 /**
7001 * @see _.find
7002 */
7003 find<T>(
7004 collection: List<T>|Dictionary<T>,
7005 predicate?: string,
7006 fromIndex?: number
7007 ): T|undefined;
7008
7009 /**
7010 * @see _.find
7011 */
7012 find<T>(
7013 collection: List<T>|Dictionary<T>,
7014 predicate?: PartialObject<T>,
7015 fromIndex?: number
7016 ): T|undefined;
7017 }
7018
7019 interface LoDashImplicitArrayWrapper<T> {
7020 /**
7021 * @see _.find
7022 */
7023 find(
7024 predicate?: ListIterator<T, boolean>,
7025 fromIndex?: number
7026 ): T|undefined;
7027
7028 /**
7029 * @see _.find
7030 */
7031 find(
7032 predicate?: string,
7033 fromIndex?: number
7034 ): T|undefined;
7035
7036 /**
7037 * @see _.find
7038 */
7039 find(
7040 predicate?: PartialObject<T>,
7041 fromIndex?: number
7042 ): T|undefined;
7043 }
7044
7045 interface LoDashImplicitObjectWrapper<T> {
7046 /**
7047 * @see _.find
7048 */
7049 find<TResult>(
7050 predicate?: ListIterator<TResult, boolean>|DictionaryIterator<TResult, boolean>,
7051 fromIndex?: number
7052 ): TResult|undefined;
7053
7054 /**
7055 * @see _.find
7056 */
7057 find<TResult>(
7058 predicate?: string,
7059 fromIndex?: number
7060 ): TResult|undefined;
7061
7062 /**
7063 * @see _.find
7064 */
7065 find<TResult>(
7066 predicate?: PartialObject<TResult>,
7067 fromIndex?: number
7068 ): TResult|undefined;
7069 }
7070
7071 //_.findLast
7072 interface LoDashStatic {
7073 /**
7074 * This method is like _.find except that it iterates over elements of a collection from
7075 * right to left.
7076 * @param collection Searches for a value in this list.
7077 * @param callback The function called per iteration.
7078 * @param fromIndex The index to search from.
7079 * @return The found element, else undefined.
7080 **/
7081 findLast<T>(
7082 collection: T[],
7083 callback: ListIterator<T, boolean>,
7084 fromIndex?: number
7085 ): T|undefined;
7086
7087 /**
7088 * @see _.find
7089 **/
7090 findLast<T>(
7091 collection: List<T>,
7092 callback: ListIterator<T, boolean>,
7093 fromIndex?: number
7094 ): T|undefined;
7095
7096 /**
7097 * @see _.find
7098 **/
7099 findLast<T>(
7100 collection: Dictionary<T>,
7101 callback: DictionaryIterator<T, boolean>,
7102 fromIndex?: number
7103 ): T|undefined;
7104
7105 /**
7106 * @see _.find
7107 * @param _.pluck style callback
7108 **/
7109 findLast<W, T>(
7110 collection: T[],
7111 whereValue: W,
7112 fromIndex?: number
7113 ): T|undefined;
7114
7115 /**
7116 * @see _.find
7117 * @param _.pluck style callback
7118 **/
7119 findLast<W, T>(
7120 collection: List<T>,
7121 whereValue: W,
7122 fromIndex?: number
7123 ): T|undefined;
7124
7125 /**
7126 * @see _.find
7127 * @param _.pluck style callback
7128 **/
7129 findLast<W, T>(
7130 collection: Dictionary<T>,
7131 whereValue: W,
7132 fromIndex?: number
7133 ): T|undefined;
7134
7135 /**
7136 * @see _.find
7137 * @param _.where style callback
7138 **/
7139 findLast<T>(
7140 collection: T[],
7141 pluckValue: string,
7142 fromIndex?: number
7143 ): T|undefined;
7144
7145 /**
7146 * @see _.find
7147 * @param _.where style callback
7148 **/
7149 findLast<T>(
7150 collection: List<T>,
7151 pluckValue: string,
7152 fromIndex?: number
7153 ): T|undefined;
7154
7155 /**
7156 * @see _.find
7157 * @param _.where style callback
7158 **/
7159 findLast<T>(
7160 collection: Dictionary<T>,
7161 pluckValue: string,
7162 fromIndex?: number
7163 ): T|undefined;
7164 }
7165
7166 interface LoDashImplicitArrayWrapper<T> {
7167 /**
7168 * @see _.findLast
7169 */
7170 findLast(
7171 callback: ListIterator<T, boolean>,
7172 fromIndex?: number
7173 ): T|undefined;
7174 /**
7175 * @see _.findLast
7176 * @param _.where style callback
7177 */
7178 findLast<W>(
7179 whereValue: W,
7180 fromIndex?: number
7181 ): T|undefined;
7182
7183 /**
7184 * @see _.findLast
7185 * @param _.where style callback
7186 */
7187 findLast(
7188 pluckValue: string,
7189 fromIndex?: number
7190 ): T|undefined;
7191 }
7192
7193 //_.flatMap
7194 interface LoDashStatic {
7195 /**
7196 * Creates an array of flattened values by running each element in collection through iteratee
7197 * and concating its result to the other mapped values. The iteratee is invoked with three arguments:
7198 * (value, index|key, collection).
7199 *
7200 * @param collection The collection to iterate over.
7201 * @param iteratee The function invoked per iteration.
7202 * @return Returns the new flattened array.
7203 */
7204 flatMap<T, TResult>(
7205 collection: List<T>,
7206 iteratee?: ListIterator<T, Many<TResult>>
7207 ): TResult[];
7208
7209 /**
7210 * @see _.flatMap
7211 */
7212 flatMap<TResult>(
7213 collection: List<any>,
7214 iteratee?: ListIterator<any, Many<TResult>>
7215 ): TResult[];
7216
7217 /**
7218 * @see _.flatMap
7219 */
7220 flatMap<T, TResult>(
7221 collection: Dictionary<T>,
7222 iteratee?: DictionaryIterator<T, Many<TResult>>
7223 ): TResult[];
7224
7225 /**
7226 * @see _.flatMap
7227 */
7228 flatMap<TResult>(
7229 collection: Dictionary<any>,
7230 iteratee?: DictionaryIterator<any, Many<TResult>>
7231 ): TResult[];
7232
7233 /**
7234 * @see _.flatMap
7235 */
7236 flatMap<T, TResult>(
7237 collection: NumericDictionary<T>,
7238 iteratee?: NumericDictionaryIterator<T, Many<TResult>>
7239 ): TResult[];
7240
7241 /**
7242 * @see _.flatMap
7243 */
7244 flatMap<TResult>(
7245 collection: NumericDictionary<any>,
7246 iteratee?: NumericDictionaryIterator<any, Many<TResult>>
7247 ): TResult[];
7248
7249 /**
7250 * @see _.flatMap
7251 */
7252 flatMap<TObject extends Object, TResult>(
7253 collection: TObject,
7254 iteratee?: ObjectIterator<any, Many<TResult>>
7255 ): TResult[];
7256
7257 /**
7258 * @see _.flatMap
7259 */
7260 flatMap<TResult>(
7261 collection: Object,
7262 iteratee?: ObjectIterator<any, Many<TResult>>
7263 ): TResult[];
7264
7265 /**
7266 * @see _.flatMap
7267 */
7268 flatMap<TWhere extends Object, TObject extends Object>(
7269 collection: TObject,
7270 iteratee: TWhere
7271 ): boolean[];
7272
7273 /**
7274 * @see _.flatMap
7275 */
7276 flatMap<TObject extends Object, TResult>(
7277 collection: TObject,
7278 iteratee: Object|string
7279 ): TResult[];
7280
7281 /**
7282 * @see _.flatMap
7283 */
7284 flatMap<TObject extends Object>(
7285 collection: TObject,
7286 iteratee: [string, any]
7287 ): boolean[];
7288
7289 /**
7290 * @see _.flatMap
7291 */
7292 flatMap<TResult>(
7293 collection: string
7294 ): string[];
7295
7296 /**
7297 * @see _.flatMap
7298 */
7299 flatMap<TResult>(
7300 collection: Object,
7301 iteratee?: Object|string
7302 ): TResult[];
7303 }
7304
7305 interface LoDashImplicitWrapper<T> {
7306 /**
7307 * @see _.flatMap
7308 */
7309 flatMap<TResult>(
7310 iteratee: ListIterator<string, Many<TResult>>
7311 ): LoDashImplicitArrayWrapper<TResult>;
7312
7313 /**
7314 * @see _.flatMap
7315 */
7316 flatMap(): LoDashImplicitArrayWrapper<string>;
7317 }
7318
7319 interface LoDashImplicitArrayWrapper<T> {
7320 /**
7321 * @see _.flatMap
7322 */
7323 flatMap<TResult>(
7324 iteratee: ListIterator<T, Many<TResult>>|string
7325 ): LoDashImplicitArrayWrapper<TResult>;
7326
7327 /**
7328 * @see _.flatMap
7329 */
7330 flatMap<TWhere extends Object>(
7331 iteratee: TWhere
7332 ): LoDashImplicitArrayWrapper<boolean>;
7333
7334 /**
7335 * @see _.flatMap
7336 */
7337 flatMap(
7338 iteratee: [string, any]
7339 ): LoDashImplicitArrayWrapper<boolean>;
7340
7341 /**
7342 * @see _.flatMap
7343 */
7344 flatMap<TResult>(): LoDashImplicitArrayWrapper<TResult>;
7345 }
7346
7347 interface LoDashImplicitObjectWrapper<T> {
7348 /**
7349 * @see _.flatMap
7350 */
7351 flatMap<T, TResult>(
7352 iteratee: ListIterator<T, Many<TResult>>|DictionaryIterator<T, Many<TResult>>|NumericDictionaryIterator<T, Many<TResult>>
7353 ): LoDashImplicitArrayWrapper<TResult>;
7354
7355 /**
7356 * @see _.flatMap
7357 */
7358 flatMap<TResult>(
7359 iteratee: ObjectIterator<any, Many<TResult>>|string
7360 ): LoDashImplicitArrayWrapper<TResult>;
7361
7362 /**
7363 * @see _.flatMap
7364 */
7365 flatMap<TWhere extends Object>(
7366 iteratee: TWhere
7367 ): LoDashImplicitArrayWrapper<boolean>;
7368
7369 /**
7370 * @see _.flatMap
7371 */
7372 flatMap(
7373 iteratee: [string, any]
7374 ): LoDashImplicitArrayWrapper<boolean>;
7375
7376 /**
7377 * @see _.flatMap
7378 */
7379 flatMap<TResult>(): LoDashImplicitArrayWrapper<TResult>;
7380 }
7381
7382 interface LoDashExplicitWrapper<T> {
7383 /**
7384 * @see _.flatMap
7385 */
7386 flatMap<TResult>(
7387 iteratee: ListIterator<string, Many<TResult>>
7388 ): LoDashExplicitArrayWrapper<TResult>;
7389
7390 /**
7391 * @see _.flatMap
7392 */
7393 flatMap(): LoDashExplicitArrayWrapper<string>;
7394 }
7395
7396 interface LoDashExplicitArrayWrapper<T> {
7397 /**
7398 * @see _.flatMap
7399 */
7400 flatMap<TResult>(
7401 iteratee: ListIterator<T, Many<TResult>>|string
7402 ): LoDashExplicitArrayWrapper<TResult>;
7403
7404 /**
7405 * @see _.flatMap
7406 */
7407 flatMap<TWhere extends Object>(
7408 iteratee: TWhere
7409 ): LoDashExplicitArrayWrapper<boolean>;
7410
7411 /**
7412 * @see _.flatMap
7413 */
7414 flatMap(
7415 iteratee: [string, any]
7416 ): LoDashExplicitArrayWrapper<boolean>;
7417
7418 /**
7419 * @see _.flatMap
7420 */
7421 flatMap<TResult>(): LoDashExplicitArrayWrapper<TResult>;
7422 }
7423
7424 interface LoDashExplicitObjectWrapper<T> {
7425 /**
7426 * @see _.flatMap
7427 */
7428 flatMap<T, TResult>(
7429 iteratee: ListIterator<T, Many<TResult>>|DictionaryIterator<T, Many<TResult>>|NumericDictionaryIterator<T, Many<TResult>>
7430 ): LoDashExplicitArrayWrapper<TResult>;
7431
7432 /**
7433 * @see _.flatMap
7434 */
7435 flatMap<TResult>(
7436 iteratee: ObjectIterator<any, Many<TResult>>|string
7437 ): LoDashExplicitArrayWrapper<TResult>;
7438
7439 /**
7440 * @see _.flatMap
7441 */
7442 flatMap<TWhere extends Object>(
7443 iteratee: TWhere
7444 ): LoDashExplicitArrayWrapper<boolean>;
7445
7446 /**
7447 * @see _.flatMap
7448 */
7449 flatMap(
7450 iteratee: [string, any]
7451 ): LoDashExplicitArrayWrapper<boolean>;
7452
7453 /**
7454 * @see _.flatMap
7455 */
7456 flatMap<TResult>(): LoDashExplicitArrayWrapper<TResult>;
7457 }
7458
7459 //_.forEach
7460 interface LoDashStatic {
7461 /**
7462 * Iterates over elements of collection invoking iteratee for each element. The iteratee is bound to thisArg
7463 * and invoked with three arguments:
7464 * (value, index|key, collection). Iteratee functions may exit iteration early by explicitly returning false.
7465 *
7466 * Note: As with other "Collections" methods, objects with a "length" property are iterated like arrays. To
7467 * avoid this behavior _.forIn or _.forOwn may be used for object iteration.
7468 *
7469 * @alias _.each
7470 *
7471 * @param collection The collection to iterate over.
7472 * @param iteratee The function invoked per iteration.
7473 * @param thisArg The this binding of iteratee.
7474 */
7475 forEach<T>(
7476 collection: T[],
7477 iteratee?: ListIterator<T, any>
7478 ): T[];
7479
7480 /**
7481 * @see _.forEach
7482 */
7483 forEach<T>(
7484 collection: List<T>,
7485 iteratee?: ListIterator<T, any>
7486 ): List<T>;
7487
7488 /**
7489 * @see _.forEach
7490 */
7491 forEach<T>(
7492 collection: Dictionary<T>,
7493 iteratee?: DictionaryIterator<T, any>
7494 ): Dictionary<T>;
7495
7496 /**
7497 * @see _.forEach
7498 */
7499 forEach<T extends {}>(
7500 collection: T,
7501 iteratee?: ObjectIterator<any, any>
7502 ): T;
7503
7504 /**
7505 * @see _.forEach
7506 */
7507 forEach<T extends {}, TValue>(
7508 collection: T,
7509 iteratee?: ObjectIterator<TValue, any>
7510 ): T;
7511 }
7512
7513 interface LoDashImplicitWrapper<T> {
7514 /**
7515 * @see _.forEach
7516 */
7517 forEach(
7518 iteratee: ListIterator<string, any>
7519 ): LoDashImplicitWrapper<string>;
7520 }
7521
7522 interface LoDashImplicitArrayWrapper<T> {
7523 /**
7524 * @see _.forEach
7525 */
7526 forEach(
7527 iteratee: ListIterator<T, any>
7528 ): LoDashImplicitArrayWrapper<T>;
7529 }
7530
7531 interface LoDashImplicitObjectWrapper<T> {
7532 /**
7533 * @see _.forEach
7534 */
7535 forEach<TValue>(
7536 iteratee?: ListIterator<TValue, any>|DictionaryIterator<TValue, any>
7537 ): LoDashImplicitObjectWrapper<T>;
7538 }
7539
7540 interface LoDashExplicitWrapper<T> {
7541 /**
7542 * @see _.forEach
7543 */
7544 forEach(
7545 iteratee: ListIterator<string, any>
7546 ): LoDashExplicitWrapper<string>;
7547 }
7548
7549 interface LoDashExplicitArrayWrapper<T> {
7550 /**
7551 * @see _.forEach
7552 */
7553 forEach(
7554 iteratee: ListIterator<T, any>
7555 ): LoDashExplicitArrayWrapper<T>;
7556 }
7557
7558 interface LoDashExplicitObjectWrapper<T> {
7559 /**
7560 * @see _.forEach
7561 */
7562 forEach<TValue>(
7563 iteratee?: ListIterator<TValue, any>|DictionaryIterator<TValue, any>
7564 ): LoDashExplicitObjectWrapper<T>;
7565 }
7566
7567 //_.forEachRight
7568 interface LoDashStatic {
7569 /**
7570 * This method is like _.forEach except that it iterates over elements of collection from right to left.
7571 *
7572 * @alias _.eachRight
7573 *
7574 * @param collection The collection to iterate over.
7575 * @param iteratee The function called per iteration.
7576 * @param thisArg The this binding of callback.
7577 */
7578 forEachRight<T>(
7579 collection: T[],
7580 iteratee?: ListIterator<T, any>
7581 ): T[];
7582
7583 /**
7584 * @see _.forEachRight
7585 */
7586 forEachRight<T>(
7587 collection: List<T>,
7588 iteratee?: ListIterator<T, any>
7589 ): List<T>;
7590
7591 /**
7592 * @see _.forEachRight
7593 */
7594 forEachRight<T>(
7595 collection: Dictionary<T>,
7596 iteratee?: DictionaryIterator<T, any>
7597 ): Dictionary<T>;
7598
7599 /**
7600 * @see _.forEachRight
7601 */
7602 forEachRight<T extends {}>(
7603 collection: T,
7604 iteratee?: ObjectIterator<any, any>
7605 ): T;
7606
7607 /**
7608 * @see _.forEachRight
7609 */
7610 forEachRight<T extends {}, TValue>(
7611 collection: T,
7612 iteratee?: ObjectIterator<TValue, any>
7613 ): T;
7614 }
7615
7616 interface LoDashImplicitWrapper<T> {
7617 /**
7618 * @see _.forEachRight
7619 */
7620 forEachRight(
7621 iteratee: ListIterator<string, any>
7622 ): LoDashImplicitWrapper<string>;
7623 }
7624
7625 interface LoDashImplicitArrayWrapper<T> {
7626 /**
7627 * @see _.forEachRight
7628 */
7629 forEachRight(
7630 iteratee: ListIterator<T, any>
7631 ): LoDashImplicitArrayWrapper<T>;
7632 }
7633
7634 interface LoDashImplicitObjectWrapper<T> {
7635 /**
7636 * @see _.forEachRight
7637 */
7638 forEachRight<TValue>(
7639 iteratee?: ListIterator<TValue, any>|DictionaryIterator<TValue, any>
7640 ): LoDashImplicitObjectWrapper<T>;
7641 }
7642
7643 interface LoDashExplicitWrapper<T> {
7644 /**
7645 * @see _.forEachRight
7646 */
7647 forEachRight(
7648 iteratee: ListIterator<string, any>
7649 ): LoDashExplicitWrapper<string>;
7650 }
7651
7652 interface LoDashExplicitArrayWrapper<T> {
7653 /**
7654 * @see _.forEachRight
7655 */
7656 forEachRight(
7657 iteratee: ListIterator<T, any>
7658 ): LoDashExplicitArrayWrapper<T>;
7659 }
7660
7661 interface LoDashExplicitObjectWrapper<T> {
7662 /**
7663 * @see _.forEachRight
7664 */
7665 forEachRight<TValue>(
7666 iteratee?: ListIterator<TValue, any>|DictionaryIterator<TValue, any>
7667 ): LoDashExplicitObjectWrapper<T>;
7668 }
7669
7670 //_.groupBy
7671 interface LoDashStatic {
7672 /**
7673 * Creates an object composed of keys generated from the results of running each element of collection through
7674 * iteratee. The corresponding value of each key is an array of the elements responsible for generating the
7675 * key. The iteratee is bound to thisArg and invoked with three arguments:
7676 * (value, index|key, collection).
7677 *
7678 * If a property name is provided for iteratee the created _.property style callback returns the property
7679 * value of the given element.
7680 *
7681 * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for
7682 * elements that have a matching property value, else false.
7683 *
7684 * If an object is provided for iteratee the created _.matches style callback returns true for elements that
7685 * have the properties of the given object, else false.
7686 *
7687 * @param collection The collection to iterate over.
7688 * @param iteratee The function invoked per iteration.
7689 * @param thisArg The this binding of iteratee.
7690 * @return Returns the composed aggregate object.
7691 */
7692 groupBy<T, TKey>(
7693 collection: List<T>,
7694 iteratee?: ListIterator<T, TKey>
7695 ): Dictionary<T[]>;
7696
7697 /**
7698 * @see _.groupBy
7699 */
7700 groupBy<T>(
7701 collection: List<any>,
7702 iteratee?: ListIterator<T, any>
7703 ): Dictionary<T[]>;
7704
7705 /**
7706 * @see _.groupBy
7707 */
7708 groupBy<T, TKey>(
7709 collection: Dictionary<T>,
7710 iteratee?: DictionaryIterator<T, TKey>
7711 ): Dictionary<T[]>;
7712
7713 /**
7714 * @see _.groupBy
7715 */
7716 groupBy<T>(
7717 collection: Dictionary<any>,
7718 iteratee?: DictionaryIterator<T, any>
7719 ): Dictionary<T[]>;
7720
7721 /**
7722 * @see _.groupBy
7723 */
7724 groupBy<T, TValue>(
7725 collection: List<T>|Dictionary<T>,
7726 iteratee?: string
7727 ): Dictionary<T[]>;
7728
7729 /**
7730 * @see _.groupBy
7731 */
7732 groupBy<T>(
7733 collection: List<T>|Dictionary<T>,
7734 iteratee?: string
7735 ): Dictionary<T[]>;
7736
7737 /**
7738 * @see _.groupBy
7739 */
7740 groupBy<TWhere, T>(
7741 collection: List<T>|Dictionary<T>,
7742 iteratee?: TWhere
7743 ): Dictionary<T[]>;
7744
7745 /**
7746 * @see _.groupBy
7747 */
7748 groupBy<T>(
7749 collection: List<T>|Dictionary<T>,
7750 iteratee?: Object
7751 ): Dictionary<T[]>;
7752 }
7753
7754 interface LoDashImplicitWrapper<T> {
7755 /**
7756 * @see _.groupBy
7757 */
7758 groupBy<TKey>(
7759 iteratee?: ListIterator<T, TKey>
7760 ): LoDashImplicitObjectWrapper<Dictionary<T[]>>;
7761 }
7762
7763 interface LoDashImplicitArrayWrapper<T> {
7764 /**
7765 * @see _.groupBy
7766 */
7767 groupBy<TKey>(
7768 iteratee?: ListIterator<T, TKey>
7769 ): LoDashImplicitObjectWrapper<Dictionary<T[]>>;
7770
7771 /**
7772 * @see _.groupBy
7773 */
7774 groupBy<TValue>(
7775 iteratee?: string
7776 ): LoDashImplicitObjectWrapper<Dictionary<T[]>>;
7777
7778 /**
7779 * @see _.groupBy
7780 */
7781 groupBy<TWhere>(
7782 iteratee?: TWhere
7783 ): LoDashImplicitObjectWrapper<Dictionary<T[]>>;
7784 }
7785
7786 interface LoDashImplicitObjectWrapper<T> {
7787 /**
7788 * @see _.groupBy
7789 */
7790 groupBy<T, TKey>(
7791 iteratee?: ListIterator<T, TKey>|DictionaryIterator<T, TKey>
7792 ): LoDashImplicitObjectWrapper<Dictionary<T[]>>;
7793
7794 /**
7795 * @see _.groupBy
7796 */
7797 groupBy<T>(
7798 iteratee?: ListIterator<T, any>|DictionaryIterator<T, any>
7799 ): LoDashImplicitObjectWrapper<Dictionary<T[]>>;
7800
7801 /**
7802 * @see _.groupBy
7803 */
7804 groupBy<T, TValue>(
7805 iteratee?: string
7806 ): LoDashImplicitObjectWrapper<Dictionary<T[]>>;
7807
7808 /**
7809 * @see _.groupBy
7810 */
7811 groupBy<T>(
7812 iteratee?: string
7813 ): LoDashImplicitObjectWrapper<Dictionary<T[]>>;
7814
7815 /**
7816 * @see _.groupBy
7817 */
7818 groupBy<TWhere, T>(
7819 iteratee?: TWhere
7820 ): LoDashImplicitObjectWrapper<Dictionary<T[]>>;
7821
7822 /**
7823 * @see _.groupBy
7824 */
7825 groupBy<T>(
7826 iteratee?: Object
7827 ): LoDashImplicitObjectWrapper<Dictionary<T[]>>;
7828 }
7829
7830 interface LoDashExplicitWrapper<T> {
7831 /**
7832 * @see _.groupBy
7833 */
7834 groupBy<TKey>(
7835 iteratee?: ListIterator<T, TKey>
7836 ): LoDashExplicitObjectWrapper<Dictionary<T[]>>;
7837 }
7838
7839 interface LoDashExplicitArrayWrapper<T> {
7840 /**
7841 * @see _.groupBy
7842 */
7843 groupBy<TKey>(
7844 iteratee?: ListIterator<T, TKey>
7845 ): LoDashExplicitObjectWrapper<Dictionary<T[]>>;
7846
7847 /**
7848 * @see _.groupBy
7849 */
7850 groupBy<TValue>(
7851 iteratee?: string
7852 ): LoDashExplicitObjectWrapper<Dictionary<T[]>>;
7853
7854 /**
7855 * @see _.groupBy
7856 */
7857 groupBy<TWhere>(
7858 iteratee?: TWhere
7859 ): LoDashExplicitObjectWrapper<Dictionary<T[]>>;
7860 }
7861
7862 interface LoDashExplicitObjectWrapper<T> {
7863 /**
7864 * @see _.groupBy
7865 */
7866 groupBy<T, TKey>(
7867 iteratee?: ListIterator<T, TKey>|DictionaryIterator<T, TKey>
7868 ): LoDashExplicitObjectWrapper<Dictionary<T[]>>;
7869
7870 /**
7871 * @see _.groupBy
7872 */
7873 groupBy<T>(
7874 iteratee?: ListIterator<T, any>|DictionaryIterator<T, any>
7875 ): LoDashExplicitObjectWrapper<Dictionary<T[]>>;
7876
7877 /**
7878 * @see _.groupBy
7879 */
7880 groupBy<T, TValue>(
7881 iteratee?: string
7882 ): LoDashExplicitObjectWrapper<Dictionary<T[]>>;
7883
7884 /**
7885 * @see _.groupBy
7886 */
7887 groupBy<T>(
7888 iteratee?: string
7889 ): LoDashExplicitObjectWrapper<Dictionary<T[]>>;
7890
7891 /**
7892 * @see _.groupBy
7893 */
7894 groupBy<TWhere, T>(
7895 iteratee?: TWhere
7896 ): LoDashExplicitObjectWrapper<Dictionary<T[]>>;
7897
7898 /**
7899 * @see _.groupBy
7900 */
7901 groupBy<T>(
7902 iteratee?: Object
7903 ): LoDashExplicitObjectWrapper<Dictionary<T[]>>;
7904 }
7905
7906 //_.includes
7907 interface LoDashStatic {
7908 /**
7909 * Checks if target is in collection using SameValueZero for equality comparisons. If fromIndex is negative,
7910 * it’s used as the offset from the end of collection.
7911 *
7912 * @param collection The collection to search.
7913 * @param target The value to search for.
7914 * @param fromIndex The index to search from.
7915 * @return True if the target element is found, else false.
7916 */
7917 includes<T>(
7918 collection: List<T>|Dictionary<T>,
7919 target: T,
7920 fromIndex?: number
7921 ): boolean;
7922
7923 /**
7924 * @see _.includes
7925 */
7926 includes(
7927 collection: string,
7928 target: string,
7929 fromIndex?: number
7930 ): boolean;
7931 }
7932
7933 interface LoDashImplicitArrayWrapper<T> {
7934 /**
7935 * @see _.includes
7936 */
7937 includes(
7938 target: T,
7939 fromIndex?: number
7940 ): boolean;
7941 }
7942
7943 interface LoDashImplicitObjectWrapper<T> {
7944 /**
7945 * @see _.includes
7946 */
7947 includes<TValue>(
7948 target: TValue,
7949 fromIndex?: number
7950 ): boolean;
7951 }
7952
7953 interface LoDashImplicitWrapper<T> {
7954 /**
7955 * @see _.includes
7956 */
7957 includes(
7958 target: string,
7959 fromIndex?: number
7960 ): boolean;
7961 }
7962
7963 interface LoDashExplicitArrayWrapper<T> {
7964 /**
7965 * @see _.includes
7966 */
7967 includes(
7968 target: T,
7969 fromIndex?: number
7970 ): LoDashExplicitWrapper<boolean>;
7971 }
7972
7973 interface LoDashExplicitObjectWrapper<T> {
7974 /**
7975 * @see _.includes
7976 */
7977 includes<TValue>(
7978 target: TValue,
7979 fromIndex?: number
7980 ): LoDashExplicitWrapper<boolean>;
7981 }
7982
7983 interface LoDashExplicitWrapper<T> {
7984 /**
7985 * @see _.includes
7986 */
7987 includes(
7988 target: string,
7989 fromIndex?: number
7990 ): LoDashExplicitWrapper<boolean>;
7991 }
7992
7993 //_.keyBy
7994 interface LoDashStatic {
7995 /**
7996 * Creates an object composed of keys generated from the results of running each element of collection through
7997 * iteratee. The corresponding value of each key is the last element responsible for generating the key. The
7998 * iteratee function is bound to thisArg and invoked with three arguments:
7999 * (value, index|key, collection).
8000 *
8001 * If a property name is provided for iteratee the created _.property style callback returns the property
8002 * value of the given element.
8003 *
8004 * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for
8005 * elements that have a matching property value, else false.
8006 *
8007 * If an object is provided for iteratee the created _.matches style callback returns true for elements that
8008 * have the properties of the given object, else false.
8009 *
8010 * @param collection The collection to iterate over.
8011 * @param iteratee The function invoked per iteration.
8012 * @param thisArg The this binding of iteratee.
8013 * @return Returns the composed aggregate object.
8014 */
8015 keyBy<T>(
8016 collection: List<T>,
8017 iteratee?: ListIterator<T, any>
8018 ): Dictionary<T>;
8019
8020 /**
8021 * @see _.keyBy
8022 */
8023 keyBy<T>(
8024 collection: NumericDictionary<T>,
8025 iteratee?: NumericDictionaryIterator<T, any>
8026 ): Dictionary<T>;
8027
8028 /**
8029 * @see _.keyBy
8030 */
8031 keyBy<T>(
8032 collection: Dictionary<T>,
8033 iteratee?: DictionaryIterator<T, any>
8034 ): Dictionary<T>;
8035
8036 /**
8037 * @see _.keyBy
8038 */
8039 keyBy<T>(
8040 collection: List<T>|NumericDictionary<T>|Dictionary<T>,
8041 iteratee?: string
8042 ): Dictionary<T>;
8043
8044 /**
8045 * @see _.keyBy
8046 */
8047 keyBy<W extends Object, T>(
8048 collection: List<T>|NumericDictionary<T>|Dictionary<T>,
8049 iteratee?: W
8050 ): Dictionary<T>;
8051
8052 /**
8053 * @see _.keyBy
8054 */
8055 keyBy<T>(
8056 collection: List<T>|NumericDictionary<T>|Dictionary<T>,
8057 iteratee?: Object
8058 ): Dictionary<T>;
8059 }
8060
8061 interface LoDashImplicitWrapper<T> {
8062 /**
8063 * @see _.keyBy
8064 */
8065 keyBy(
8066 iteratee?: ListIterator<T, any>
8067 ): LoDashImplicitObjectWrapper<Dictionary<T>>;
8068 }
8069
8070 interface LoDashImplicitArrayWrapper<T> {
8071 /**
8072 * @see _.keyBy
8073 */
8074 keyBy(
8075 iteratee?: ListIterator<T, any>
8076 ): LoDashImplicitObjectWrapper<Dictionary<T>>;
8077
8078 /**
8079 * @see _.keyBy
8080 */
8081 keyBy(
8082 iteratee?: string
8083 ): LoDashImplicitObjectWrapper<Dictionary<T>>;
8084
8085 /**
8086 * @see _.keyBy
8087 */
8088 keyBy<W extends Object>(
8089 iteratee?: W
8090 ): LoDashImplicitObjectWrapper<Dictionary<T>>;
8091 }
8092
8093 interface LoDashImplicitObjectWrapper<T> {
8094 /**
8095 * @see _.keyBy
8096 */
8097 keyBy<T>(
8098 iteratee?: ListIterator<T, any>|NumericDictionaryIterator<T, any>|DictionaryIterator<T, any>
8099 ): LoDashImplicitObjectWrapper<Dictionary<T>>;
8100
8101 /**
8102 * @see _.keyBy
8103 */
8104 keyBy<T>(
8105 iteratee?: string
8106 ): LoDashImplicitObjectWrapper<Dictionary<T>>;
8107
8108 /**
8109 * @see _.keyBy
8110 */
8111 keyBy<W extends Object, T>(
8112 iteratee?: W
8113 ): LoDashImplicitObjectWrapper<Dictionary<T>>;
8114
8115 /**
8116 * @see _.keyBy
8117 */
8118 keyBy<T>(
8119 iteratee?: Object
8120 ): LoDashImplicitObjectWrapper<Dictionary<T>>;
8121 }
8122
8123 interface LoDashExplicitWrapper<T> {
8124 /**
8125 * @see _.keyBy
8126 */
8127 keyBy(
8128 iteratee?: ListIterator<T, any>
8129 ): LoDashExplicitObjectWrapper<Dictionary<T>>;
8130 }
8131
8132 interface LoDashExplicitArrayWrapper<T> {
8133 /**
8134 * @see _.keyBy
8135 */
8136 keyBy(
8137 iteratee?: ListIterator<T, any>
8138 ): LoDashExplicitObjectWrapper<Dictionary<T>>;
8139
8140 /**
8141 * @see _.keyBy
8142 */
8143 keyBy(
8144 iteratee?: string
8145 ): LoDashExplicitObjectWrapper<Dictionary<T>>;
8146
8147 /**
8148 * @see _.keyBy
8149 */
8150 keyBy<W extends Object>(
8151 iteratee?: W
8152 ): LoDashExplicitObjectWrapper<Dictionary<T>>;
8153 }
8154
8155 interface LoDashExplicitObjectWrapper<T> {
8156 /**
8157 * @see _.keyBy
8158 */
8159 keyBy<T>(
8160 iteratee?: ListIterator<T, any>|NumericDictionaryIterator<T, any>|DictionaryIterator<T, any>
8161 ): LoDashExplicitObjectWrapper<Dictionary<T>>;
8162
8163 /**
8164 * @see _.keyBy
8165 */
8166 keyBy<T>(
8167 iteratee?: string
8168 ): LoDashExplicitObjectWrapper<Dictionary<T>>;
8169
8170 /**
8171 * @see _.keyBy
8172 */
8173 keyBy<W extends Object, T>(
8174 iteratee?: W
8175 ): LoDashExplicitObjectWrapper<Dictionary<T>>;
8176
8177 /**
8178 * @see _.keyBy
8179 */
8180 keyBy<T>(
8181 iteratee?: Object
8182 ): LoDashExplicitObjectWrapper<Dictionary<T>>;
8183 }
8184
8185 //_.invoke
8186 interface LoDashStatic {
8187 /**
8188 * Invokes the method at path of object.
8189 * @param object The object to query.
8190 * @param path The path of the method to invoke.
8191 * @param args The arguments to invoke the method with.
8192 **/
8193 invoke<TObject extends Object, TResult>(
8194 object: TObject,
8195 path: Many<StringRepresentable>,
8196 ...args: any[]): TResult;
8197
8198 /**
8199 * @see _.invoke
8200 **/
8201 invoke<TValue, TResult>(
8202 object: Dictionary<TValue>|TValue[],
8203 path: Many<StringRepresentable>,
8204 ...args: any[]): TResult;
8205
8206 /**
8207 * @see _.invoke
8208 **/
8209 invoke<TResult>(
8210 object: any,
8211 path: Many<StringRepresentable>,
8212 ...args: any[]): TResult;
8213 }
8214
8215 interface LoDashImplicitArrayWrapper<T> {
8216 /**
8217 * @see _.invoke
8218 **/
8219 invoke<TResult>(
8220 path: Many<StringRepresentable>,
8221 ...args: any[]): TResult;
8222 }
8223
8224 interface LoDashImplicitObjectWrapper<T> {
8225 /**
8226 * @see _.invoke
8227 **/
8228 invoke<TResult>(
8229 path: Many<StringRepresentable>,
8230 ...args: any[]): TResult;
8231 }
8232
8233 interface LoDashExplicitArrayWrapper<T> {
8234 /**
8235 * @see _.invoke
8236 **/
8237 invoke<TResult>(
8238 path: Many<StringRepresentable>,
8239 ...args: any[]): TResult;
8240 }
8241
8242 interface LoDashExplicitObjectWrapper<T> {
8243 /**
8244 * @see _.invoke
8245 **/
8246 invoke<TResult>(
8247 path: Many<StringRepresentable>,
8248 ...args: any[]): TResult;
8249 }
8250
8251 //_.invokeMap
8252 interface LoDashStatic {
8253 /**
8254 * Invokes the method named by methodName on each element in the collection returning
8255 * an array of the results of each invoked method. Additional arguments will be provided
8256 * to each invoked method. If methodName is a function it will be invoked for, and this
8257 * bound to, each element in the collection.
8258 * @param collection The collection to iterate over.
8259 * @param methodName The name of the method to invoke.
8260 * @param args Arguments to invoke the method with.
8261 **/
8262 invokeMap<TValue extends {}, TResult>(
8263 collection: TValue[],
8264 methodName: string,
8265 ...args: any[]): TResult[];
8266
8267 /**
8268 * @see _.invokeMap
8269 **/
8270 invokeMap<TValue extends {}, TResult>(
8271 collection: Dictionary<TValue>,
8272 methodName: string,
8273 ...args: any[]): TResult[];
8274
8275 /**
8276 * @see _.invokeMap
8277 **/
8278 invokeMap<TResult>(
8279 collection: Array<{}>,
8280 methodName: string,
8281 ...args: any[]): TResult[];
8282
8283 /**
8284 * @see _.invokeMap
8285 **/
8286 invokeMap<TResult>(
8287 collection: Dictionary<{}>,
8288 methodName: string,
8289 ...args: any[]): TResult[];
8290
8291 /**
8292 * @see _.invokeMap
8293 **/
8294 invokeMap<TValue extends {}, TResult>(
8295 collection: TValue[],
8296 method: (...args: any[]) => TResult,
8297 ...args: any[]): TResult[];
8298
8299 /**
8300 * @see _.invokeMap
8301 **/
8302 invokeMap<TValue extends {}, TResult>(
8303 collection: Dictionary<TValue>,
8304 method: (...args: any[]) => TResult,
8305 ...args: any[]): TResult[];
8306
8307 /**
8308 * @see _.invokeMap
8309 **/
8310 invokeMap<TResult>(
8311 collection: Array<{}>,
8312 method: (...args: any[]) => TResult,
8313 ...args: any[]): TResult[];
8314
8315 /**
8316 * @see _.invokeMap
8317 **/
8318 invokeMap<TResult>(
8319 collection: Dictionary<{}>,
8320 method: (...args: any[]) => TResult,
8321 ...args: any[]): TResult[];
8322 }
8323
8324 interface LoDashImplicitArrayWrapper<T> {
8325 /**
8326 * @see _.invokeMap
8327 **/
8328 invokeMap<TResult>(
8329 methodName: string,
8330 ...args: any[]): LoDashImplicitArrayWrapper<TResult>;
8331
8332 /**
8333 * @see _.invokeMap
8334 **/
8335 invokeMap<TResult>(
8336 method: (...args: any[]) => TResult,
8337 ...args: any[]): LoDashImplicitArrayWrapper<TResult>;
8338 }
8339
8340 interface LoDashImplicitObjectWrapper<T> {
8341 /**
8342 * @see _.invokeMap
8343 **/
8344 invokeMap<TResult>(
8345 methodName: string,
8346 ...args: any[]): LoDashImplicitArrayWrapper<TResult>;
8347
8348 /**
8349 * @see _.invokeMap
8350 **/
8351 invokeMap<TResult>(
8352 method: (...args: any[]) => TResult,
8353 ...args: any[]): LoDashImplicitArrayWrapper<TResult>;
8354 }
8355
8356 interface LoDashExplicitArrayWrapper<T> {
8357 /**
8358 * @see _.invokeMap
8359 **/
8360 invokeMap<TResult>(
8361 methodName: string,
8362 ...args: any[]): LoDashExplicitArrayWrapper<TResult>;
8363
8364 /**
8365 * @see _.invokeMap
8366 **/
8367 invokeMap<TResult>(
8368 method: (...args: any[]) => TResult,
8369 ...args: any[]): LoDashExplicitArrayWrapper<TResult>;
8370 }
8371
8372 interface LoDashExplicitObjectWrapper<T> {
8373 /**
8374 * @see _.invokeMap
8375 **/
8376 invokeMap<TResult>(
8377 methodName: string,
8378 ...args: any[]): LoDashExplicitArrayWrapper<TResult>;
8379
8380 /**
8381 * @see _.invokeMap
8382 **/
8383 invokeMap<TResult>(
8384 method: (...args: any[]) => TResult,
8385 ...args: any[]): LoDashExplicitArrayWrapper<TResult>;
8386 }
8387
8388 //_.map
8389 interface LoDashStatic {
8390 /**
8391 * Creates an array of values by running each element in collection through iteratee. The iteratee is bound to
8392 * thisArg and invoked with three arguments: (value, index|key, collection).
8393 *
8394 * If a property name is provided for iteratee the created _.property style callback returns the property value
8395 * of the given element.
8396 *
8397 * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for
8398 * elements that have a matching property value, else false.
8399 *
8400 * If an object is provided for iteratee the created _.matches style callback returns true for elements that
8401 * have the properties of the given object, else false.
8402 *
8403 * Many lodash methods are guarded to work as iteratees for methods like _.every, _.filter, _.map, _.mapValues,
8404 * _.reject, and _.some.
8405 *
8406 * The guarded methods are:
8407 * ary, callback, chunk, clone, create, curry, curryRight, drop, dropRight, every, fill, flatten, invert, max,
8408 * min, parseInt, slice, sortBy, take, takeRight, template, trim, trimLeft, trimRight, trunc, random, range,
8409 * sample, some, sum, uniq, and words
8410 *
8411 * @param collection The collection to iterate over.
8412 * @param iteratee The function invoked per iteration.
8413 * @param thisArg The this binding of iteratee.
8414 * @return Returns the new mapped array.
8415 */
8416 map<T, TResult>(
8417 collection: List<T>,
8418 iteratee?: ListIterator<T, TResult>
8419 ): TResult[];
8420
8421 /**
8422 * @see _.map
8423 */
8424 map<T extends {}, TResult>(
8425 collection: Dictionary<T>,
8426 iteratee?: DictionaryIterator<T, TResult>
8427 ): TResult[];
8428
8429 map<T extends {}, TResult>(
8430 collection: NumericDictionary<T>,
8431 iteratee?: NumericDictionaryIterator<T, TResult>
8432 ): TResult[];
8433
8434 /**
8435 * @see _.map
8436 */
8437 map<T, TResult>(
8438 collection: List<T>|Dictionary<T>|NumericDictionary<T>,
8439 iteratee?: string
8440 ): TResult[];
8441
8442 /**
8443 * @see _.map
8444 */
8445 map<T, TObject extends {}>(
8446 collection: List<T>|Dictionary<T>|NumericDictionary<T>,
8447 iteratee?: TObject
8448 ): boolean[];
8449 }
8450
8451 interface LoDashImplicitArrayWrapper<T> {
8452 /**
8453 * @see _.map
8454 */
8455 map<TResult>(
8456 iteratee?: ListIterator<T, TResult>
8457 ): LoDashImplicitArrayWrapper<TResult>;
8458
8459 /**
8460 * @see _.map
8461 */
8462 map<TResult>(
8463 iteratee?: string
8464 ): LoDashImplicitArrayWrapper<TResult>;
8465
8466 /**
8467 * @see _.map
8468 */
8469 map<TObject extends {}>(
8470 iteratee?: TObject
8471 ): LoDashImplicitArrayWrapper<boolean>;
8472 }
8473
8474 interface LoDashImplicitObjectWrapper<T> {
8475 /**
8476 * @see _.map
8477 */
8478 map<TValue, TResult>(
8479 iteratee?: ListIterator<TValue, TResult>|DictionaryIterator<TValue, TResult>
8480 ): LoDashImplicitArrayWrapper<TResult>;
8481
8482 /**
8483 * @see _.map
8484 */
8485 map<TValue, TResult>(
8486 iteratee?: string
8487 ): LoDashImplicitArrayWrapper<TResult>;
8488
8489 /**
8490 * @see _.map
8491 */
8492 map<TObject extends {}>(
8493 iteratee?: TObject
8494 ): LoDashImplicitArrayWrapper<boolean>;
8495 }
8496
8497 interface LoDashExplicitArrayWrapper<T> {
8498 /**
8499 * @see _.map
8500 */
8501 map<TResult>(
8502 iteratee?: ListIterator<T, TResult>
8503 ): LoDashExplicitArrayWrapper<TResult>;
8504
8505 /**
8506 * @see _.map
8507 */
8508 map<TResult>(
8509 iteratee?: string
8510 ): LoDashExplicitArrayWrapper<TResult>;
8511
8512 /**
8513 * @see _.map
8514 */
8515 map<TObject extends {}>(
8516 iteratee?: TObject
8517 ): LoDashExplicitArrayWrapper<boolean>;
8518 }
8519
8520 interface LoDashExplicitObjectWrapper<T> {
8521 /**
8522 * @see _.map
8523 */
8524 map<TValue, TResult>(
8525 iteratee?: ListIterator<TValue, TResult>|DictionaryIterator<TValue, TResult>
8526 ): LoDashExplicitArrayWrapper<TResult>;
8527
8528 /**
8529 * @see _.map
8530 */
8531 map<TValue, TResult>(
8532 iteratee?: string
8533 ): LoDashExplicitArrayWrapper<TResult>;
8534
8535 /**
8536 * @see _.map
8537 */
8538 map<TObject extends {}>(
8539 iteratee?: TObject
8540 ): LoDashExplicitArrayWrapper<boolean>;
8541 }
8542
8543 //_.partition
8544 interface LoDashStatic {
8545 /**
8546 * Creates an array of elements split into two groups, the first of which contains elements predicate returns truthy for,
8547 * while the second of which contains elements predicate returns falsey for.
8548 * The predicate is bound to thisArg and invoked with three arguments: (value, index|key, collection).
8549 *
8550 * If a property name is provided for predicate the created _.property style callback
8551 * returns the property value of the given element.
8552 *
8553 * If a value is also provided for thisArg the created _.matchesProperty style callback
8554 * returns true for elements that have a matching property value, else false.
8555 *
8556 * If an object is provided for predicate the created _.matches style callback returns
8557 * true for elements that have the properties of the given object, else false.
8558 *
8559 * @param collection The collection to iterate over.
8560 * @param callback The function called per iteration.
8561 * @param thisArg The this binding of predicate.
8562 * @return Returns the array of grouped elements.
8563 **/
8564 partition<T>(
8565 collection: List<T>,
8566 callback: ListIterator<T, boolean>): T[][];
8567
8568 /**
8569 * @see _.partition
8570 **/
8571 partition<T>(
8572 collection: Dictionary<T>,
8573 callback: DictionaryIterator<T, boolean>): T[][];
8574
8575 /**
8576 * @see _.partition
8577 **/
8578 partition<W, T>(
8579 collection: List<T>,
8580 whereValue: W): T[][];
8581
8582 /**
8583 * @see _.partition
8584 **/
8585 partition<W, T>(
8586 collection: Dictionary<T>,
8587 whereValue: W): T[][];
8588
8589 /**
8590 * @see _.partition
8591 **/
8592 partition<T>(
8593 collection: List<T>,
8594 path: string,
8595 srcValue: any): T[][];
8596
8597 /**
8598 * @see _.partition
8599 **/
8600 partition<T>(
8601 collection: Dictionary<T>,
8602 path: string,
8603 srcValue: any): T[][];
8604
8605 /**
8606 * @see _.partition
8607 **/
8608 partition<T>(
8609 collection: List<T>,
8610 pluckValue: string): T[][];
8611
8612 /**
8613 * @see _.partition
8614 **/
8615 partition<T>(
8616 collection: Dictionary<T>,
8617 pluckValue: string): T[][];
8618 }
8619
8620 interface LoDashImplicitStringWrapper {
8621 /**
8622 * @see _.partition
8623 */
8624 partition(
8625 callback: ListIterator<string, boolean>): LoDashImplicitArrayWrapper<string[]>;
8626 }
8627
8628 interface LoDashImplicitArrayWrapper<T> {
8629 /**
8630 * @see _.partition
8631 */
8632 partition(
8633 callback: ListIterator<T, boolean>): LoDashImplicitArrayWrapper<T[]>;
8634 /**
8635 * @see _.partition
8636 */
8637 partition<W>(
8638 whereValue: W): LoDashImplicitArrayWrapper<T[]>;
8639 /**
8640 * @see _.partition
8641 */
8642 partition(
8643 path: string,
8644 srcValue: any): LoDashImplicitArrayWrapper<T[]>;
8645 /**
8646 * @see _.partition
8647 */
8648 partition(
8649 pluckValue: string): LoDashImplicitArrayWrapper<T[]>;
8650 }
8651
8652 interface LoDashImplicitObjectWrapper<T> {
8653 /**
8654 * @see _.partition
8655 */
8656 partition<TResult>(
8657 callback: ListIterator<TResult, boolean>): LoDashImplicitArrayWrapper<TResult[]>;
8658
8659 /**
8660 * @see _.partition
8661 */
8662 partition<TResult>(
8663 callback: DictionaryIterator<TResult, boolean>): LoDashImplicitArrayWrapper<TResult[]>;
8664
8665 /**
8666 * @see _.partition
8667 */
8668 partition<W, TResult>(
8669 whereValue: W): LoDashImplicitArrayWrapper<TResult[]>;
8670
8671 /**
8672 * @see _.partition
8673 */
8674 partition<TResult>(
8675 path: string,
8676 srcValue: any): LoDashImplicitArrayWrapper<TResult[]>;
8677
8678 /**
8679 * @see _.partition
8680 */
8681 partition<TResult>(
8682 pluckValue: string): LoDashImplicitArrayWrapper<TResult[]>;
8683 }
8684
8685 //_.reduce
8686 interface LoDashStatic {
8687 /**
8688 * Reduces a collection to a value which is the accumulated result of running each
8689 * element in the collection through the callback, where each successive callback execution
8690 * consumes the return value of the previous execution. If accumulator is not provided the
8691 * first element of the collection will be used as the initial accumulator value. The callback
8692 * is bound to thisArg and invoked with four arguments; (accumulator, value, index|key, collection).
8693 * @param collection The collection to iterate over.
8694 * @param callback The function called per iteration.
8695 * @param accumulator Initial value of the accumulator.
8696 * @param thisArg The this binding of callback.
8697 * @return Returns the accumulated value.
8698 **/
8699 reduce<T, TResult>(
8700 collection: T[],
8701 callback: MemoIterator<T, TResult>,
8702 accumulator: TResult): TResult;
8703
8704 /**
8705 * @see _.reduce
8706 **/
8707 reduce<T, TResult>(
8708 collection: List<T>,
8709 callback: MemoIterator<T, TResult>,
8710 accumulator: TResult): TResult;
8711
8712 /**
8713 * @see _.reduce
8714 **/
8715 reduce<T, TResult>(
8716 collection: Dictionary<T>,
8717 callback: MemoIterator<T, TResult>,
8718 accumulator: TResult): TResult;
8719
8720 /**
8721 * @see _.reduce
8722 **/
8723 reduce<T, TResult>(
8724 collection: NumericDictionary<T>,
8725 callback: MemoIterator<T, TResult>,
8726 accumulator: TResult): TResult;
8727
8728 /**
8729 * @see _.reduce
8730 **/
8731 reduce<T, TResult>(
8732 collection: T[],
8733 callback: MemoIterator<T, TResult>): TResult;
8734
8735 /**
8736 * @see _.reduce
8737 **/
8738 reduce<T, TResult>(
8739 collection: List<T>,
8740 callback: MemoIterator<T, TResult>): TResult;
8741
8742 /**
8743 * @see _.reduce
8744 **/
8745 reduce<T, TResult>(
8746 collection: Dictionary<T>,
8747 callback: MemoIterator<T, TResult>): TResult;
8748
8749 /**
8750 * @see _.reduce
8751 **/
8752 reduce<T, TResult>(
8753 collection: NumericDictionary<T>,
8754 callback: MemoIterator<T, TResult>): TResult;
8755 }
8756
8757 interface LoDashImplicitArrayWrapper<T> {
8758 /**
8759 * @see _.reduce
8760 **/
8761 reduce<TResult>(
8762 callback: MemoIterator<T, TResult>,
8763 accumulator: TResult): TResult;
8764
8765 /**
8766 * @see _.reduce
8767 **/
8768 reduce<TResult>(
8769 callback: MemoIterator<T, TResult>): TResult;
8770 }
8771
8772 interface LoDashImplicitObjectWrapper<T> {
8773 /**
8774 * @see _.reduce
8775 **/
8776 reduce<TValue, TResult>(
8777 callback: MemoIterator<TValue, TResult>,
8778 accumulator: TResult): TResult;
8779
8780 /**
8781 * @see _.reduce
8782 **/
8783 reduce<TValue, TResult>(
8784 callback: MemoIterator<TValue, TResult>): TResult;
8785 }
8786
8787 interface LoDashExplicitObjectWrapper<T> {
8788 /**
8789 * @see _.reduce
8790 **/
8791 reduce<TValue, TResult>(
8792 callback: MemoIterator<TValue, TResult>,
8793 accumulator: TResult): LoDashExplicitObjectWrapper<TResult>;
8794
8795 /**
8796 * @see _.reduce
8797 **/
8798 reduce<TValue, TResult>(
8799 callback: MemoIterator<TValue, TResult>): LoDashExplicitObjectWrapper<TResult>;
8800 }
8801
8802 interface LoDashExplicitArrayWrapper<T> {
8803 /**LoDashExplicitWrapper
8804 * @see _.reduce
8805 */
8806 reduce<TResult>(
8807 callback: MemoIterator<T, TResult>,
8808 accumulator: TResult): LoDashExplicitWrapper<TResult>;
8809
8810 /**
8811 * @see _.reduce
8812 */
8813 reduce<TResult>(
8814 callback: MemoIterator<T, TResult>): LoDashExplicitWrapper<TResult>;
8815 }
8816
8817 //_.reduceRight
8818 interface LoDashStatic {
8819 /**
8820 * This method is like _.reduce except that it iterates over elements of a collection from
8821 * right to left.
8822 * @param collection The collection to iterate over.
8823 * @param callback The function called per iteration.
8824 * @param accumulator Initial value of the accumulator.
8825 * @param thisArg The this binding of callback.
8826 * @return The accumulated value.
8827 **/
8828 reduceRight<T, TResult>(
8829 collection: T[],
8830 callback: MemoIterator<T, TResult>,
8831 accumulator: TResult): TResult;
8832
8833 /**
8834 * @see _.reduceRight
8835 **/
8836 reduceRight<T, TResult>(
8837 collection: List<T>,
8838 callback: MemoIterator<T, TResult>,
8839 accumulator: TResult): TResult;
8840
8841 /**
8842 * @see _.reduceRight
8843 **/
8844 reduceRight<T, TResult>(
8845 collection: Dictionary<T>,
8846 callback: MemoIterator<T, TResult>,
8847 accumulator: TResult): TResult;
8848
8849 /**
8850 * @see _.reduceRight
8851 **/
8852 reduceRight<T, TResult>(
8853 collection: T[],
8854 callback: MemoIterator<T, TResult>): TResult;
8855
8856 /**
8857 * @see _.reduceRight
8858 **/
8859 reduceRight<T, TResult>(
8860 collection: List<T>,
8861 callback: MemoIterator<T, TResult>): TResult;
8862
8863 /**
8864 * @see _.reduceRight
8865 **/
8866 reduceRight<T, TResult>(
8867 collection: Dictionary<T>,
8868 callback: MemoIterator<T, TResult>): TResult;
8869 }
8870
8871 //_.reject
8872 interface LoDashStatic {
8873 /**
8874 * The opposite of _.filter; this method returns the elements of collection that predicate does not return
8875 * truthy for.
8876 *
8877 * @param collection The collection to iterate over.
8878 * @param predicate The function invoked per iteration.
8879 * @param thisArg The this binding of predicate.
8880 * @return Returns the new filtered array.
8881 */
8882 reject<T>(
8883 collection: List<T>,
8884 predicate?: ListIterator<T, boolean>
8885 ): T[];
8886
8887 /**
8888 * @see _.reject
8889 */
8890 reject<T>(
8891 collection: Dictionary<T>,
8892 predicate?: DictionaryIterator<T, boolean>
8893 ): T[];
8894
8895 /**
8896 * @see _.reject
8897 */
8898 reject(
8899 collection: string,
8900 predicate?: StringIterator<boolean>
8901 ): string[];
8902
8903 /**
8904 * @see _.reject
8905 */
8906 reject<T>(
8907 collection: List<T>|Dictionary<T>,
8908 predicate: string
8909 ): T[];
8910
8911 /**
8912 * @see _.reject
8913 */
8914 reject<W extends {}, T>(
8915 collection: List<T>|Dictionary<T>,
8916 predicate: W
8917 ): T[];
8918 }
8919
8920 interface LoDashImplicitWrapper<T> {
8921 /**
8922 * @see _.reject
8923 */
8924 reject(
8925 predicate?: StringIterator<boolean>
8926 ): LoDashImplicitArrayWrapper<string>;
8927 }
8928
8929 interface LoDashImplicitArrayWrapper<T> {
8930 /**
8931 * @see _.reject
8932 */
8933 reject(
8934 predicate: ListIterator<T, boolean>
8935 ): LoDashImplicitArrayWrapper<T>;
8936
8937 /**
8938 * @see _.reject
8939 */
8940 reject(
8941 predicate: string
8942 ): LoDashImplicitArrayWrapper<T>;
8943
8944 /**
8945 * @see _.reject
8946 */
8947 reject<W>(predicate: W): LoDashImplicitArrayWrapper<T>;
8948 }
8949
8950 interface LoDashImplicitObjectWrapper<T> {
8951 /**
8952 * @see _.reject
8953 */
8954 reject<T>(
8955 predicate: ListIterator<T, boolean>|DictionaryIterator<T, boolean>
8956 ): LoDashImplicitArrayWrapper<T>;
8957
8958 /**
8959 * @see _.reject
8960 */
8961 reject<T>(
8962 predicate: string
8963 ): LoDashImplicitArrayWrapper<T>;
8964
8965 /**
8966 * @see _.reject
8967 */
8968 reject<W, T>(predicate: W): LoDashImplicitArrayWrapper<T>;
8969 }
8970
8971 interface LoDashExplicitWrapper<T> {
8972 /**
8973 * @see _.reject
8974 */
8975 reject(
8976 predicate?: StringIterator<boolean>
8977 ): LoDashExplicitArrayWrapper<string>;
8978 }
8979
8980 interface LoDashExplicitArrayWrapper<T> {
8981 /**
8982 * @see _.reject
8983 */
8984 reject(
8985 predicate: ListIterator<T, boolean>
8986 ): LoDashExplicitArrayWrapper<T>;
8987
8988 /**
8989 * @see _.reject
8990 */
8991 reject(
8992 predicate: string
8993 ): LoDashExplicitArrayWrapper<T>;
8994
8995 /**
8996 * @see _.reject
8997 */
8998 reject<W>(predicate: W): LoDashExplicitArrayWrapper<T>;
8999 }
9000
9001 interface LoDashExplicitObjectWrapper<T> {
9002 /**
9003 * @see _.reject
9004 */
9005 reject<T>(
9006 predicate: ListIterator<T, boolean>|DictionaryIterator<T, boolean>
9007 ): LoDashExplicitArrayWrapper<T>;
9008
9009 /**
9010 * @see _.reject
9011 */
9012 reject<T>(
9013 predicate: string
9014 ): LoDashExplicitArrayWrapper<T>;
9015
9016 /**
9017 * @see _.reject
9018 */
9019 reject<W, T>(predicate: W): LoDashExplicitArrayWrapper<T>;
9020 }
9021
9022 //_.sample
9023 interface LoDashStatic {
9024 /**
9025 * Gets a random element from collection.
9026 *
9027 * @param collection The collection to sample.
9028 * @return Returns the random element.
9029 */
9030 sample<T>(
9031 collection: List<T>|Dictionary<T>|NumericDictionary<T>
9032 ): T;
9033
9034 /**
9035 * @see _.sample
9036 */
9037 sample<O extends Object, T>(
9038 collection: O
9039 ): T;
9040
9041 /**
9042 * @see _.sample
9043 */
9044 sample<T>(
9045 collection: Object
9046 ): T;
9047 }
9048
9049 interface LoDashImplicitWrapper<T> {
9050 /**
9051 * @see _.sample
9052 */
9053 sample(): string;
9054 }
9055
9056 interface LoDashImplicitArrayWrapper<T> {
9057 /**
9058 * @see _.sample
9059 */
9060 sample(): T;
9061 }
9062
9063 interface LoDashImplicitObjectWrapper<T> {
9064 /**
9065 * @see _.sample
9066 */
9067 sample<T>(): T;
9068 }
9069
9070 interface LoDashExplicitWrapper<T> {
9071 /**
9072 * @see _.sample
9073 */
9074 sample(): LoDashExplicitWrapper<string>;
9075 }
9076
9077 interface LoDashExplicitArrayWrapper<T> {
9078 /**
9079 * @see _.sample
9080 */
9081 sample<TWrapper>(): TWrapper;
9082 }
9083
9084 interface LoDashExplicitObjectWrapper<T> {
9085 /**
9086 * @see _.sample
9087 */
9088 sample<TWrapper>(): TWrapper;
9089 }
9090
9091 //_.sampleSize
9092 interface LoDashStatic {
9093 /**
9094 * Gets n random elements at unique keys from collection up to the size of collection.
9095 *
9096 * @param collection The collection to sample.
9097 * @param n The number of elements to sample.
9098 * @return Returns the random elements.
9099 */
9100 sampleSize<T>(
9101 collection: List<T>|Dictionary<T>|NumericDictionary<T>,
9102 n?: number
9103 ): T[];
9104
9105 /**
9106 * @see _.sampleSize
9107 */
9108 sampleSize<O extends Object, T>(
9109 collection: O,
9110 n?: number
9111 ): T[];
9112
9113 /**
9114 * @see _.sampleSize
9115 */
9116 sampleSize<T>(
9117 collection: Object,
9118 n?: number
9119 ): T[];
9120 }
9121
9122 interface LoDashImplicitWrapper<T> {
9123 /**
9124 * @see _.sampleSize
9125 */
9126 sampleSize(
9127 n?: number
9128 ): LoDashImplicitArrayWrapper<string>;
9129 }
9130
9131 interface LoDashImplicitArrayWrapper<T> {
9132 /**
9133 * @see _.sampleSize
9134 */
9135 sampleSize(
9136 n?: number
9137 ): LoDashImplicitArrayWrapper<T>;
9138 }
9139
9140 interface LoDashImplicitObjectWrapper<T> {
9141 /**
9142 * @see _.sampleSize
9143 */
9144 sampleSize<T>(
9145 n?: number
9146 ): LoDashImplicitArrayWrapper<T>;
9147 }
9148
9149 interface LoDashExplicitWrapper<T> {
9150 /**
9151 * @see _.sampleSize
9152 */
9153 sampleSize(
9154 n?: number
9155 ): LoDashExplicitArrayWrapper<string>;
9156 }
9157
9158 interface LoDashExplicitArrayWrapper<T> {
9159 /**
9160 * @see _.sampleSize
9161 */
9162 sampleSize(
9163 n?: number
9164 ): LoDashExplicitArrayWrapper<T>;
9165 }
9166
9167 interface LoDashExplicitObjectWrapper<T> {
9168 /**
9169 * @see _.sampleSize
9170 */
9171 sampleSize<T>(
9172 n?: number
9173 ): LoDashExplicitArrayWrapper<T>;
9174 }
9175
9176 //_.shuffle
9177 interface LoDashStatic {
9178 /**
9179 * Creates an array of shuffled values, using a version of the Fisher-Yates shuffle.
9180 *
9181 * @param collection The collection to shuffle.
9182 * @return Returns the new shuffled array.
9183 */
9184 shuffle<T>(collection: List<T>|Dictionary<T>): T[];
9185
9186 /**
9187 * @see _.shuffle
9188 */
9189 shuffle(collection: string): string[];
9190 }
9191
9192 interface LoDashImplicitWrapper<T> {
9193 /**
9194 * @see _.shuffle
9195 */
9196 shuffle(): LoDashImplicitArrayWrapper<string>;
9197 }
9198
9199 interface LoDashImplicitArrayWrapper<T> {
9200 /**
9201 * @see _.shuffle
9202 */
9203 shuffle(): LoDashImplicitArrayWrapper<T>;
9204 }
9205
9206 interface LoDashImplicitObjectWrapper<T> {
9207 /**
9208 * @see _.shuffle
9209 */
9210 shuffle<T>(): LoDashImplicitArrayWrapper<T>;
9211 }
9212
9213 interface LoDashExplicitWrapper<T> {
9214 /**
9215 * @see _.shuffle
9216 */
9217 shuffle(): LoDashExplicitArrayWrapper<string>;
9218 }
9219
9220 interface LoDashExplicitArrayWrapper<T> {
9221 /**
9222 * @see _.shuffle
9223 */
9224 shuffle(): LoDashExplicitArrayWrapper<T>;
9225 }
9226
9227 interface LoDashExplicitObjectWrapper<T> {
9228 /**
9229 * @see _.shuffle
9230 */
9231 shuffle<T>(): LoDashExplicitArrayWrapper<T>;
9232 }
9233
9234 //_.size
9235 interface LoDashStatic {
9236 /**
9237 * Gets the size of collection by returning its length for array-like values or the number of own enumerable
9238 * properties for objects.
9239 *
9240 * @param collection The collection to inspect.
9241 * @return Returns the size of collection.
9242 */
9243 size<T>(collection: List<T>|Dictionary<T>): number;
9244
9245 /**
9246 * @see _.size
9247 */
9248 size(collection: string): number;
9249 }
9250
9251 interface LoDashImplicitWrapper<T> {
9252 /**
9253 * @see _.size
9254 */
9255 size(): number;
9256 }
9257
9258 interface LoDashImplicitArrayWrapper<T> {
9259 /**
9260 * @see _.size
9261 */
9262 size(): number;
9263 }
9264
9265 interface LoDashImplicitObjectWrapper<T> {
9266 /**
9267 * @see _.size
9268 */
9269 size(): number;
9270 }
9271
9272 interface LoDashExplicitWrapper<T> {
9273 /**
9274 * @see _.size
9275 */
9276 size(): LoDashExplicitWrapper<number>;
9277 }
9278
9279 interface LoDashExplicitArrayWrapper<T> {
9280 /**
9281 * @see _.size
9282 */
9283 size(): LoDashExplicitWrapper<number>;
9284 }
9285
9286 interface LoDashExplicitObjectWrapper<T> {
9287 /**
9288 * @see _.size
9289 */
9290 size(): LoDashExplicitWrapper<number>;
9291 }
9292
9293 //_.some
9294 interface LoDashStatic {
9295 /**
9296 * Checks if predicate returns truthy for any element of collection. Iteration is stopped once predicate
9297 * returns truthy. The predicate is invoked with three arguments: (value, index|key, collection).
9298 *
9299 * @param collection The collection to iterate over.
9300 * @param predicate The function invoked per iteration.
9301 * @return Returns true if any element passes the predicate check, else false.
9302 */
9303 some<T>(
9304 collection: List<T>,
9305 predicate?: ListIterator<T, boolean>
9306 ): boolean;
9307
9308 /**
9309 * @see _.some
9310 */
9311 some<T>(
9312 collection: Dictionary<T>,
9313 predicate?: DictionaryIterator<T, boolean>
9314 ): boolean;
9315
9316 /**
9317 * @see _.some
9318 */
9319 some<T>(
9320 collection: NumericDictionary<T>,
9321 predicate?: NumericDictionaryIterator<T, boolean>
9322 ): boolean;
9323
9324 /**
9325 * @see _.some
9326 */
9327 some(
9328 collection: Object,
9329 predicate?: ObjectIterator<any, boolean>
9330 ): boolean;
9331
9332 /**
9333 * @see _.some
9334 */
9335 some<T>(
9336 collection: List<T>|Dictionary<T>|NumericDictionary<T>,
9337 predicate?: string|[string, any]
9338 ): boolean;
9339
9340 /**
9341 * @see _.some
9342 */
9343 some(
9344 collection: Object,
9345 predicate?: string|[string, any]
9346 ): boolean;
9347
9348 /**
9349 * @see _.some
9350 */
9351 some<T>(
9352 collection: List<T>|Dictionary<T>|NumericDictionary<T>,
9353 predicate?: PartialObject<T>
9354 ): boolean;
9355
9356 /**
9357 * @see _.some
9358 */
9359 some<T>(
9360 collection: List<T>|Dictionary<T>|NumericDictionary<T>,
9361 predicate?: PartialObject<T>
9362 ): boolean;
9363
9364 /**
9365 * @see _.some
9366 */
9367 some<T>(
9368 collection: Object,
9369 predicate?: PartialObject<T>
9370 ): boolean;
9371 }
9372
9373 interface LoDashImplicitArrayWrapper<T> {
9374 /**
9375 * @see _.some
9376 */
9377 some(
9378 predicate?: ListIterator<T, boolean>|NumericDictionaryIterator<T, boolean>
9379 ): boolean;
9380
9381 /**
9382 * @see _.some
9383 */
9384 some(
9385 predicate?: string|[string, any]
9386 ): boolean;
9387
9388 /**
9389 * @see _.some
9390 */
9391 some(
9392 predicate?: PartialObject<T>
9393 ): boolean;
9394 }
9395
9396 interface LoDashImplicitObjectWrapper<T> {
9397 /**
9398 * @see _.some
9399 */
9400 some<TResult>(
9401 predicate?: ListIterator<TResult, boolean>|DictionaryIterator<TResult, boolean>|NumericDictionaryIterator<T, boolean>|ObjectIterator<any, boolean>
9402 ): boolean;
9403
9404 /**
9405 * @see _.some
9406 */
9407 some(
9408 predicate?: string|[string, any]
9409 ): boolean;
9410
9411 /**
9412 * @see _.some
9413 */
9414 some<TResult>(
9415 predicate?: PartialObject<TResult>
9416 ): boolean;
9417 }
9418
9419 interface LoDashExplicitArrayWrapper<T> {
9420 /**
9421 * @see _.some
9422 */
9423 some(
9424 predicate?: ListIterator<T, boolean>|NumericDictionaryIterator<T, boolean>
9425 ): LoDashExplicitWrapper<boolean>;
9426
9427 /**
9428 * @see _.some
9429 */
9430 some(
9431 predicate?: string|[string, any]
9432 ): LoDashExplicitWrapper<boolean>;
9433
9434 /**
9435 * @see _.some
9436 */
9437 some(
9438 predicate?: PartialObject<T>
9439 ): LoDashExplicitWrapper<boolean>;
9440 }
9441
9442 interface LoDashExplicitObjectWrapper<T> {
9443 /**
9444 * @see _.some
9445 */
9446 some<TResult>(
9447 predicate?: ListIterator<TResult, boolean>|DictionaryIterator<TResult, boolean>|NumericDictionaryIterator<T, boolean>|ObjectIterator<any, boolean>
9448 ): LoDashExplicitWrapper<boolean>;
9449
9450 /**
9451 * @see _.some
9452 */
9453 some(
9454 predicate?: string|[string, any]
9455 ): LoDashExplicitWrapper<boolean>;
9456
9457 /**
9458 * @see _.some
9459 */
9460 some<TResult>(
9461 predicate?: PartialObject<TResult>
9462 ): LoDashExplicitWrapper<boolean>;
9463 }
9464
9465 //_.sortBy
9466 interface LoDashStatic {
9467 /**
9468 * Creates an array of elements, sorted in ascending order by the results of
9469 * running each element in a collection through each iteratee. This method
9470 * performs a stable sort, that is, it preserves the original sort order of
9471 * equal elements. The iteratees are invoked with one argument: (value).
9472 *
9473 * @static
9474 * @memberOf _
9475 * @category Collection
9476 * @param {Array|Object} collection The collection to iterate over.
9477 * @param {...(Function|Function[]|Object|Object[]|string|string[])} [iteratees=[_.identity]]
9478 * The iteratees to sort by, specified individually or in arrays.
9479 * @returns {Array} Returns the new sorted array.
9480 * @example
9481 *
9482 * var users = [
9483 * { 'user': 'fred', 'age': 48 },
9484 * { 'user': 'barney', 'age': 36 },
9485 * { 'user': 'fred', 'age': 42 },
9486 * { 'user': 'barney', 'age': 34 }
9487 * ];
9488 *
9489 * _.sortBy(users, function(o) { return o.user; });
9490 * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]]
9491 *
9492 * _.sortBy(users, ['user', 'age']);
9493 * // => objects for [['barney', 34], ['barney', 36], ['fred', 42], ['fred', 48]]
9494 *
9495 * _.sortBy(users, 'user', function(o) {
9496 * return Math.floor(o.age / 10);
9497 * });
9498 * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]]
9499 */
9500 sortBy<T, TSort>(
9501 collection: List<T>,
9502 iteratee?: ListIterator<T, TSort>
9503 ): T[];
9504
9505 /**
9506 * @see _.sortBy
9507 */
9508 sortBy<T, TSort>(
9509 collection: Dictionary<T>,
9510 iteratee?: DictionaryIterator<T, TSort>
9511 ): T[];
9512
9513 /**
9514 * @see _.sortBy
9515 */
9516 sortBy<T>(
9517 collection: List<T>|Dictionary<T>,
9518 iteratee: string
9519 ): T[];
9520
9521 /**
9522 * @see _.sortBy
9523 */
9524 sortBy<W extends {}, T>(
9525 collection: List<T>|Dictionary<T>,
9526 whereValue: W
9527 ): T[];
9528
9529 /**
9530 * @see _.sortBy
9531 */
9532 sortBy<T>(
9533 collection: List<T>|Dictionary<T>
9534 ): T[];
9535
9536 /**
9537 * @see _.sortBy
9538 */
9539 sortBy<T>(
9540 collection: List<T>,
9541 iteratees: Array<ListIterator<T, any>|string|Object>): T[];
9542
9543 /**
9544 * @see _.sortBy
9545 */
9546 sortBy<T>(
9547 collection: List<T>,
9548 ...iteratees: Array<ListIterator<T, boolean>|Object|string>): T[];
9549 }
9550
9551 interface LoDashImplicitArrayWrapper<T> {
9552 /**
9553 * @see _.sortBy
9554 */
9555 sortBy<TSort>(
9556 iteratee?: ListIterator<T, TSort>
9557 ): LoDashImplicitArrayWrapper<T>;
9558
9559 /**
9560 * @see _.sortBy
9561 */
9562 sortBy(iteratee: string): LoDashImplicitArrayWrapper<T>;
9563
9564 /**
9565 * @see _.sortBy
9566 */
9567 sortBy<W extends {}>(whereValue: W): LoDashImplicitArrayWrapper<T>;
9568
9569 /**
9570 * @see _.sortBy
9571 */
9572 sortBy(): LoDashImplicitArrayWrapper<T>;
9573
9574 /**
9575 * @see _.sortBy
9576 */
9577 sortBy(...iteratees: Array<ListIterator<T, boolean>|Object|string>): LoDashImplicitArrayWrapper<T>;
9578
9579 /**
9580 * @see _.sortBy
9581 **/
9582 sortBy(iteratees: Array<ListIterator<T, any>|string|Object>): LoDashImplicitArrayWrapper<T>;
9583 }
9584
9585 interface LoDashImplicitObjectWrapper<T> {
9586 /**
9587 * @see _.sortBy
9588 */
9589 sortBy<T, TSort>(
9590 iteratee?: ListIterator<T, TSort>|DictionaryIterator<T, TSort>
9591 ): LoDashImplicitArrayWrapper<T>;
9592
9593 /**
9594 * @see _.sortBy
9595 */
9596 sortBy<T>(iteratee: string): LoDashImplicitArrayWrapper<T>;
9597
9598 /**
9599 * @see _.sortBy
9600 */
9601 sortBy<W extends {}, T>(whereValue: W): LoDashImplicitArrayWrapper<T>;
9602
9603 /**
9604 * @see _.sortBy
9605 */
9606 sortBy<T>(): LoDashImplicitArrayWrapper<T>;
9607 }
9608
9609 interface LoDashExplicitArrayWrapper<T> {
9610 /**
9611 * @see _.sortBy
9612 */
9613 sortBy<TSort>(
9614 iteratee?: ListIterator<T, TSort>
9615 ): LoDashExplicitArrayWrapper<T>;
9616
9617 /**
9618 * @see _.sortBy
9619 */
9620 sortBy(iteratee: string): LoDashExplicitArrayWrapper<T>;
9621
9622 /**
9623 * @see _.sortBy
9624 */
9625 sortBy<W extends {}>(whereValue: W): LoDashExplicitArrayWrapper<T>;
9626
9627 /**
9628 * @see _.sortBy
9629 */
9630 sortBy(): LoDashExplicitArrayWrapper<T>;
9631 }
9632
9633 interface LoDashExplicitObjectWrapper<T> {
9634 /**
9635 * @see _.sortBy
9636 */
9637 sortBy<T, TSort>(
9638 iteratee?: ListIterator<T, TSort>|DictionaryIterator<T, TSort>
9639 ): LoDashExplicitArrayWrapper<T>;
9640
9641 /**
9642 * @see _.sortBy
9643 */
9644 sortBy<T>(iteratee: string): LoDashExplicitArrayWrapper<T>;
9645
9646 /**
9647 * @see _.sortBy
9648 */
9649 sortBy<W extends {}, T>(whereValue: W): LoDashExplicitArrayWrapper<T>;
9650
9651 /**
9652 * @see _.sortBy
9653 */
9654 sortBy<T>(): LoDashExplicitArrayWrapper<T>;
9655 }
9656
9657 //_.orderBy
9658 interface LoDashStatic {
9659 /**
9660 * This method is like `_.sortBy` except that it allows specifying the sort
9661 * orders of the iteratees to sort by. If `orders` is unspecified, all values
9662 * are sorted in ascending order. Otherwise, specify an order of "desc" for
9663 * descending or "asc" for ascending sort order of corresponding values.
9664 *
9665 * @static
9666 * @memberOf _
9667 * @category Collection
9668 * @param {Array|Object} collection The collection to iterate over.
9669 * @param {Function[]|Object[]|string[]} [iteratees=[_.identity]] The iteratees to sort by.
9670 * @param {string[]} [orders] The sort orders of `iteratees`.
9671 * @param- {Object} [guard] Enables use as an iteratee for functions like `_.reduce`.
9672 * @returns {Array} Returns the new sorted array.
9673 * @example
9674 *
9675 * var users = [
9676 * { 'user': 'fred', 'age': 48 },
9677 * { 'user': 'barney', 'age': 34 },
9678 * { 'user': 'fred', 'age': 42 },
9679 * { 'user': 'barney', 'age': 36 }
9680 * ];
9681 *
9682 * // sort by `user` in ascending order and by `age` in descending order
9683 * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);
9684 * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]]
9685 */
9686 orderBy<W extends Object, T>(
9687 collection: List<T>,
9688 iteratees: Many<ListIterator<T, any>|string|W>,
9689 orders?: Many<boolean|string>
9690 ): T[];
9691
9692 /**
9693 * @see _.orderBy
9694 */
9695 orderBy<T>(
9696 collection: List<T>,
9697 iteratees: Many<ListIterator<T, any>|string|Object>,
9698 orders?: Many<boolean|string>
9699 ): T[];
9700
9701 /**
9702 * @see _.orderBy
9703 */
9704 orderBy<W extends Object, T>(
9705 collection: NumericDictionary<T>,
9706 iteratees: Many<NumericDictionaryIterator<T, any>|string|W>,
9707 orders?: Many<boolean|string>
9708 ): T[];
9709
9710 /**
9711 * @see _.orderBy
9712 */
9713 orderBy<T>(
9714 collection: NumericDictionary<T>,
9715 iteratees: Many<NumericDictionaryIterator<T, any>|string|Object>,
9716 orders?: Many<boolean|string>
9717 ): T[];
9718
9719 /**
9720 * @see _.orderBy
9721 */
9722 orderBy<W extends Object, T>(
9723 collection: Dictionary<T>,
9724 iteratees: Many<DictionaryIterator<T, any>|string|W>,
9725 orders?: Many<boolean|string>
9726 ): T[];
9727
9728 /**
9729 * @see _.orderBy
9730 */
9731 orderBy<T>(
9732 collection: Dictionary<T>,
9733 iteratees: Many<DictionaryIterator<T, any>|string|Object>,
9734 orders?: Many<boolean|string>
9735 ): T[];
9736 }
9737
9738 interface LoDashImplicitWrapper<T> {
9739 /**
9740 * @see _.orderBy
9741 */
9742 orderBy(
9743 iteratees: Many<ListIterator<T, any>|string>,
9744 orders?: Many<boolean|string>
9745 ): LoDashImplicitArrayWrapper<T>;
9746 }
9747
9748 interface LoDashImplicitArrayWrapper<T> {
9749 /**
9750 * @see _.orderBy
9751 */
9752 orderBy<W extends Object>(
9753 iteratees: Many<ListIterator<T, any>|string|W>,
9754 orders?: Many<boolean|string>
9755 ): LoDashImplicitArrayWrapper<T>;
9756 }
9757
9758 interface LoDashImplicitObjectWrapper<T> {
9759 /**
9760 * @see _.orderBy
9761 */
9762 orderBy<W extends Object, T>(
9763 iteratees: Many<ListIterator<T, any>|string|W>,
9764 orders?: Many<boolean|string>
9765 ): LoDashImplicitArrayWrapper<T>;
9766
9767 /**
9768 * @see _.orderBy
9769 */
9770 orderBy<T>(
9771 iteratees: Many<ListIterator<T, any>|string|Object>,
9772 orders?: Many<boolean|string>
9773 ): LoDashImplicitArrayWrapper<T>;
9774
9775 /**
9776 * @see _.orderBy
9777 */
9778 orderBy<W extends Object, T>(
9779 iteratees: Many<NumericDictionaryIterator<T, any>|string|W>,
9780 orders?: Many<boolean|string>
9781 ): LoDashImplicitArrayWrapper<T>;
9782
9783 /**
9784 * @see _.orderBy
9785 */
9786 orderBy<T>(
9787 iteratees: Many<NumericDictionaryIterator<T, any>|string|Object>,
9788 orders?: Many<boolean|string>
9789 ): LoDashImplicitArrayWrapper<T>;
9790
9791 /**
9792 * @see _.orderBy
9793 */
9794 orderBy<W extends Object, T>(
9795 iteratees: Many<DictionaryIterator<T, any>|string|W>,
9796 orders?: Many<boolean|string>
9797 ): LoDashImplicitArrayWrapper<T>;
9798
9799 /**
9800 * @see _.orderBy
9801 */
9802 orderBy<T>(
9803 iteratees: Many<DictionaryIterator<T, any>|string|Object>,
9804 orders?: Many<boolean|string>
9805 ): LoDashImplicitArrayWrapper<T>;
9806 }
9807
9808 interface LoDashExplicitWrapper<T> {
9809 /**
9810 * @see _.orderBy
9811 */
9812 orderBy(
9813 iteratees: Many<ListIterator<T, any>|string>,
9814 orders?: Many<boolean|string>
9815 ): LoDashExplicitArrayWrapper<T>;
9816 }
9817
9818 interface LoDashExplicitArrayWrapper<T> {
9819 /**
9820 * @see _.orderBy
9821 */
9822 orderBy<W extends Object>(
9823 iteratees: Many<ListIterator<T, any>|string|W|(ListIterator<T, any>|string|W)>,
9824 orders?: Many<boolean|string>
9825 ): LoDashExplicitArrayWrapper<T>;
9826 }
9827
9828 interface LoDashExplicitObjectWrapper<T> {
9829 /**
9830 * @see _.orderBy
9831 */
9832 orderBy<W extends Object, T>(
9833 iteratees: Many<ListIterator<T, any>|string|W>,
9834 orders?: Many<boolean|string>
9835 ): LoDashExplicitArrayWrapper<T>;
9836
9837 /**
9838 * @see _.orderBy
9839 */
9840 orderBy<T>(
9841 iteratees: Many<ListIterator<T, any>|string|Object>,
9842 orders?: Many<boolean|string>
9843 ): LoDashExplicitArrayWrapper<T>;
9844
9845 /**
9846 * @see _.orderBy
9847 */
9848 orderBy<W extends Object, T>(
9849 iteratees: Many<NumericDictionaryIterator<T, any>|string|W>,
9850 orders?: Many<boolean|string>
9851 ): LoDashExplicitArrayWrapper<T>;
9852
9853 /**
9854 * @see _.orderBy
9855 */
9856 orderBy<T>(
9857 iteratees: Many<NumericDictionaryIterator<T, any>|string|Object>,
9858 orders?: Many<boolean|string>
9859 ): LoDashExplicitArrayWrapper<T>;
9860
9861 /**
9862 * @see _.orderBy
9863 */
9864 orderBy<W extends Object, T>(
9865 iteratees: Many<DictionaryIterator<T, any>|string|W>,
9866 orders?: Many<boolean|string>
9867 ): LoDashExplicitArrayWrapper<T>;
9868
9869 /**
9870 * @see _.orderBy
9871 */
9872 orderBy<T>(
9873 iteratees: Many<DictionaryIterator<T, any>|string|Object>,
9874 orders?: Many<boolean|string>
9875 ): LoDashExplicitArrayWrapper<T>;
9876 }
9877
9878 /********
9879 * Date *
9880 ********/
9881
9882 //_.now
9883 interface LoDashStatic {
9884 /**
9885 * Gets the number of milliseconds that have elapsed since the Unix epoch (1 January 1970 00:00:00 UTC).
9886 *
9887 * @return The number of milliseconds.
9888 */
9889 now(): number;
9890 }
9891
9892 interface LoDashImplicitWrapperBase<T, TWrapper> {
9893 /**
9894 * @see _.now
9895 */
9896 now(): number;
9897 }
9898
9899 interface LoDashExplicitWrapperBase<T, TWrapper> {
9900 /**
9901 * @see _.now
9902 */
9903 now(): LoDashExplicitWrapper<number>;
9904 }
9905
9906 /*************
9907 * Functions *
9908 *************/
9909
9910 //_.after
9911 interface LoDashStatic {
9912 /**
9913 * The opposite of _.before; this method creates a function that invokes func once it’s called n or more times.
9914 *
9915 * @param n The number of calls before func is invoked.
9916 * @param func The function to restrict.
9917 * @return Returns the new restricted function.
9918 */
9919 after<TFunc extends Function>(
9920 n: number,
9921 func: TFunc
9922 ): TFunc;
9923 }
9924
9925 interface LoDashImplicitWrapper<T> {
9926 /**
9927 * @see _.after
9928 **/
9929 after<TFunc extends Function>(func: TFunc): LoDashImplicitObjectWrapper<TFunc>;
9930 }
9931
9932 interface LoDashExplicitWrapper<T> {
9933 /**
9934 * @see _.after
9935 **/
9936 after<TFunc extends Function>(func: TFunc): LoDashExplicitObjectWrapper<TFunc>;
9937 }
9938
9939 //_.ary
9940 interface LoDashStatic {
9941 /**
9942 * Creates a function that accepts up to n arguments ignoring any additional arguments.
9943 *
9944 * @param func The function to cap arguments for.
9945 * @param n The arity cap.
9946 * @returns Returns the new function.
9947 */
9948 ary<TResult extends Function>(
9949 func: Function,
9950 n?: number
9951 ): TResult;
9952
9953 ary<T extends Function, TResult extends Function>(
9954 func: T,
9955 n?: number
9956 ): TResult;
9957 }
9958
9959 interface LoDashImplicitObjectWrapper<T> {
9960 /**
9961 * @see _.ary
9962 */
9963 ary<TResult extends Function>(n?: number): LoDashImplicitObjectWrapper<TResult>;
9964 }
9965
9966 interface LoDashExplicitObjectWrapper<T> {
9967 /**
9968 * @see _.ary
9969 */
9970 ary<TResult extends Function>(n?: number): LoDashExplicitObjectWrapper<TResult>;
9971 }
9972
9973 //_.before
9974 interface LoDashStatic {
9975 /**
9976 * Creates a function that invokes func, with the this binding and arguments of the created function, while
9977 * it’s called less than n times. Subsequent calls to the created function return the result of the last func
9978 * invocation.
9979 *
9980 * @param n The number of calls at which func is no longer invoked.
9981 * @param func The function to restrict.
9982 * @return Returns the new restricted function.
9983 */
9984 before<TFunc extends Function>(
9985 n: number,
9986 func: TFunc
9987 ): TFunc;
9988 }
9989
9990 interface LoDashImplicitWrapper<T> {
9991 /**
9992 * @see _.before
9993 **/
9994 before<TFunc extends Function>(func: TFunc): LoDashImplicitObjectWrapper<TFunc>;
9995 }
9996
9997 interface LoDashExplicitWrapper<T> {
9998 /**
9999 * @see _.before
10000 **/
10001 before<TFunc extends Function>(func: TFunc): LoDashExplicitObjectWrapper<TFunc>;
10002 }
10003
10004 //_.bind
10005 interface FunctionBind {
10006 placeholder: any;
10007
10008 <T extends Function, TResult extends Function>(
10009 func: T,
10010 thisArg: any,
10011 ...partials: any[]
10012 ): TResult;
10013
10014 <TResult extends Function>(
10015 func: Function,
10016 thisArg: any,
10017 ...partials: any[]
10018 ): TResult;
10019 }
10020
10021 interface LoDashStatic {
10022 /**
10023 * Creates a function that invokes func with the this binding of thisArg and prepends any additional _.bind
10024 * arguments to those provided to the bound function.
10025 *
10026 * The _.bind.placeholder value, which defaults to _ in monolithic builds, may be used as a placeholder for
10027 * partially applied arguments.
10028 *
10029 * Note: Unlike native Function#bind this method does not set the "length" property of bound functions.
10030 *
10031 * @param func The function to bind.
10032 * @param thisArg The this binding of func.
10033 * @param partials The arguments to be partially applied.
10034 * @return Returns the new bound function.
10035 */
10036 bind: FunctionBind;
10037 }
10038
10039 interface LoDashImplicitObjectWrapper<T> {
10040 /**
10041 * @see _.bind
10042 */
10043 bind<TResult extends Function>(
10044 thisArg: any,
10045 ...partials: any[]
10046 ): LoDashImplicitObjectWrapper<TResult>;
10047 }
10048
10049 interface LoDashExplicitObjectWrapper<T> {
10050 /**
10051 * @see _.bind
10052 */
10053 bind<TResult extends Function>(
10054 thisArg: any,
10055 ...partials: any[]
10056 ): LoDashExplicitObjectWrapper<TResult>;
10057 }
10058
10059 //_.bindAll
10060 interface LoDashStatic {
10061 /**
10062 * Binds methods of an object to the object itself, overwriting the existing method. Method names may be
10063 * specified as individual arguments or as arrays of method names. If no method names are provided all
10064 * enumerable function properties, own and inherited, of object are bound.
10065 *
10066 * Note: This method does not set the "length" property of bound functions.
10067 *
10068 * @param object The object to bind and assign the bound methods to.
10069 * @param methodNames The object method names to bind, specified as individual method names or arrays of
10070 * method names.
10071 * @return Returns object.
10072 */
10073 bindAll<T>(
10074 object: T,
10075 ...methodNames: Array<Many<string>>
10076 ): T;
10077 }
10078
10079 interface LoDashImplicitObjectWrapper<T> {
10080 /**
10081 * @see _.bindAll
10082 */
10083 bindAll(...methodNames: Array<Many<string>>): LoDashImplicitObjectWrapper<T>;
10084 }
10085
10086 interface LoDashExplicitObjectWrapper<T> {
10087 /**
10088 * @see _.bindAll
10089 */
10090 bindAll(...methodNames: Array<Many<string>>): LoDashExplicitObjectWrapper<T>;
10091 }
10092
10093 //_.bindKey
10094 interface FunctionBindKey {
10095 placeholder: any;
10096
10097 <T extends Object, TResult extends Function>(
10098 object: T,
10099 key: any,
10100 ...partials: any[]
10101 ): TResult;
10102
10103 <TResult extends Function>(
10104 object: Object,
10105 key: any,
10106 ...partials: any[]
10107 ): TResult;
10108 }
10109
10110 interface LoDashStatic {
10111 /**
10112 * Creates a function that invokes the method at object[key] and prepends any additional _.bindKey arguments
10113 * to those provided to the bound function.
10114 *
10115 * This method differs from _.bind by allowing bound functions to reference methods that may be redefined
10116 * or don’t yet exist. See Peter Michaux’s article for more details.
10117 *
10118 * The _.bindKey.placeholder value, which defaults to _ in monolithic builds, may be used as a placeholder
10119 * for partially applied arguments.
10120 *
10121 * @param object The object the method belongs to.
10122 * @param key The key of the method.
10123 * @param partials The arguments to be partially applied.
10124 * @return Returns the new bound function.
10125 */
10126 bindKey: FunctionBindKey;
10127 }
10128
10129 interface LoDashImplicitObjectWrapper<T> {
10130 /**
10131 * @see _.bindKey
10132 */
10133 bindKey<TResult extends Function>(
10134 key: any,
10135 ...partials: any[]
10136 ): LoDashImplicitObjectWrapper<TResult>;
10137 }
10138
10139 interface LoDashExplicitObjectWrapper<T> {
10140 /**
10141 * @see _.bindKey
10142 */
10143 bindKey<TResult extends Function>(
10144 key: any,
10145 ...partials: any[]
10146 ): LoDashExplicitObjectWrapper<TResult>;
10147 }
10148
10149 //_.createCallback
10150 interface LoDashStatic {
10151 /**
10152 * Produces a callback bound to an optional thisArg. If func is a property name the created
10153 * callback will return the property value for a given element. If func is an object the created
10154 * callback will return true for elements that contain the equivalent object properties,
10155 * otherwise it will return false.
10156 * @param func The value to convert to a callback.
10157 * @param thisArg The this binding of the created callback.
10158 * @param argCount The number of arguments the callback accepts.
10159 * @return A callback function.
10160 **/
10161 createCallback(
10162 func: string,
10163 argCount?: number): () => any;
10164
10165 /**
10166 * @see _.createCallback
10167 **/
10168 createCallback(
10169 func: Dictionary<any>,
10170 argCount?: number): () => boolean;
10171 }
10172
10173 interface LoDashImplicitWrapper<T> {
10174 /**
10175 * @see _.createCallback
10176 **/
10177 createCallback(
10178 argCount?: number): LoDashImplicitObjectWrapper<() => any>;
10179 }
10180
10181 interface LoDashImplicitObjectWrapper<T> {
10182 /**
10183 * @see _.createCallback
10184 **/
10185 createCallback(
10186 argCount?: number): LoDashImplicitObjectWrapper<() => any>;
10187 }
10188
10189 //_.curry
10190 interface LoDashStatic {
10191 /**
10192 * Creates a function that accepts one or more arguments of func that when called either invokes func returning
10193 * its result, if all func arguments have been provided, or returns a function that accepts one or more of the
10194 * remaining func arguments, and so on. The arity of func may be specified if func.length is not sufficient.
10195 * @param func The function to curry.
10196 * @return Returns the new curried function.
10197 */
10198 curry<T1, R>(func: (t1: T1) => R):
10199 CurriedFunction1<T1, R>;
10200 /**
10201 * Creates a function that accepts one or more arguments of func that when called either invokes func returning
10202 * its result, if all func arguments have been provided, or returns a function that accepts one or more of the
10203 * remaining func arguments, and so on. The arity of func may be specified if func.length is not sufficient.
10204 * @param func The function to curry.
10205 * @return Returns the new curried function.
10206 */
10207 curry<T1, T2, R>(func: (t1: T1, t2: T2) => R):
10208 CurriedFunction2<T1, T2, R>;
10209 /**
10210 * Creates a function that accepts one or more arguments of func that when called either invokes func returning
10211 * its result, if all func arguments have been provided, or returns a function that accepts one or more of the
10212 * remaining func arguments, and so on. The arity of func may be specified if func.length is not sufficient.
10213 * @param func The function to curry.
10214 * @return Returns the new curried function.
10215 */
10216 curry<T1, T2, T3, R>(func: (t1: T1, t2: T2, t3: T3) => R):
10217 CurriedFunction3<T1, T2, T3, R>;
10218 /**
10219 * Creates a function that accepts one or more arguments of func that when called either invokes func returning
10220 * its result, if all func arguments have been provided, or returns a function that accepts one or more of the
10221 * remaining func arguments, and so on. The arity of func may be specified if func.length is not sufficient.
10222 * @param func The function to curry.
10223 * @return Returns the new curried function.
10224 */
10225 curry<T1, T2, T3, T4, R>(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R):
10226 CurriedFunction4<T1, T2, T3, T4, R>;
10227 /**
10228 * Creates a function that accepts one or more arguments of func that when called either invokes func returning
10229 * its result, if all func arguments have been provided, or returns a function that accepts one or more of the
10230 * remaining func arguments, and so on. The arity of func may be specified if func.length is not sufficient.
10231 * @param func The function to curry.
10232 * @return Returns the new curried function.
10233 */
10234 curry<T1, T2, T3, T4, T5, R>(func: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5) => R):
10235 CurriedFunction5<T1, T2, T3, T4, T5, R>;
10236 /**
10237 * Creates a function that accepts one or more arguments of func that when called either invokes func returning
10238 * its result, if all func arguments have been provided, or returns a function that accepts one or more of the
10239 * remaining func arguments, and so on. The arity of func may be specified if func.length is not sufficient.
10240 * @param func The function to curry.
10241 * @param arity The arity of func.
10242 * @return Returns the new curried function.
10243 */
10244 curry<TResult extends Function>(
10245 func: Function,
10246 arity?: number): TResult;
10247 }
10248
10249 interface CurriedFunction1<T1, R> {
10250 (): CurriedFunction1<T1, R>;
10251 (t1: T1): R;
10252 }
10253
10254 interface CurriedFunction2<T1, T2, R> {
10255 (): CurriedFunction2<T1, T2, R>;
10256 (t1: T1): CurriedFunction1<T2, R>;
10257 (t1: T1, t2: T2): R;
10258 }
10259
10260 interface CurriedFunction3<T1, T2, T3, R> {
10261 (): CurriedFunction3<T1, T2, T3, R>;
10262 (t1: T1): CurriedFunction2<T2, T3, R>;
10263 (t1: T1, t2: T2): CurriedFunction1<T3, R>;
10264 (t1: T1, t2: T2, t3: T3): R;
10265 }
10266
10267 interface CurriedFunction4<T1, T2, T3, T4, R> {
10268 (): CurriedFunction4<T1, T2, T3, T4, R>;
10269 (t1: T1): CurriedFunction3<T2, T3, T4, R>;
10270 (t1: T1, t2: T2): CurriedFunction2<T3, T4, R>;
10271 (t1: T1, t2: T2, t3: T3): CurriedFunction1<T4, R>;
10272 (t1: T1, t2: T2, t3: T3, t4: T4): R;
10273 }
10274
10275 interface CurriedFunction5<T1, T2, T3, T4, T5, R> {
10276 (): CurriedFunction5<T1, T2, T3, T4, T5, R>;
10277 (t1: T1): CurriedFunction4<T2, T3, T4, T5, R>;
10278 (t1: T1, t2: T2): CurriedFunction3<T3, T4, T5, R>;
10279 (t1: T1, t2: T2, t3: T3): CurriedFunction2<T4, T5, R>;
10280 (t1: T1, t2: T2, t3: T3, t4: T4): CurriedFunction1<T5, R>;
10281 (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5): R;
10282 }
10283
10284 interface LoDashImplicitObjectWrapper<T> {
10285 /**
10286 * @see _.curry
10287 **/
10288 curry<TResult extends Function>(arity?: number): LoDashImplicitObjectWrapper<TResult>;
10289 }
10290
10291 //_.curryRight
10292 interface LoDashStatic {
10293 /**
10294 * This method is like _.curry except that arguments are applied to func in the manner of _.partialRight
10295 * instead of _.partial.
10296 * @param func The function to curry.
10297 * @return Returns the new curried function.
10298 */
10299 curryRight<T1, R>(func: (t1: T1) => R):
10300 CurriedFunction1<T1, R>;
10301 /**
10302 * This method is like _.curry except that arguments are applied to func in the manner of _.partialRight
10303 * instead of _.partial.
10304 * @param func The function to curry.
10305 * @return Returns the new curried function.
10306 */
10307 curryRight<T1, T2, R>(func: (t1: T1, t2: T2) => R):
10308 CurriedFunction2<T2, T1, R>;
10309 /**
10310 * This method is like _.curry except that arguments are applied to func in the manner of _.partialRight
10311 * instead of _.partial.
10312 * @param func The function to curry.
10313 * @return Returns the new curried function.
10314 */
10315 curryRight<T1, T2, T3, R>(func: (t1: T1, t2: T2, t3: T3) => R):
10316 CurriedFunction3<T3, T2, T1, R>;
10317 /**
10318 * This method is like _.curry except that arguments are applied to func in the manner of _.partialRight
10319 * instead of _.partial.
10320 * @param func The function to curry.
10321 * @return Returns the new curried function.
10322 */
10323 curryRight<T1, T2, T3, T4, R>(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R):
10324 CurriedFunction4<T4, T3, T2, T1, R>;
10325 /**
10326 * This method is like _.curry except that arguments are applied to func in the manner of _.partialRight
10327 * instead of _.partial.
10328 * @param func The function to curry.
10329 * @return Returns the new curried function.
10330 */
10331 curryRight<T1, T2, T3, T4, T5, R>(func: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5) => R):
10332 CurriedFunction5<T5, T4, T3, T2, T1, R>;
10333 /**
10334 * This method is like _.curry except that arguments are applied to func in the manner of _.partialRight
10335 * instead of _.partial.
10336 * @param func The function to curry.
10337 * @param arity The arity of func.
10338 * @return Returns the new curried function.
10339 */
10340 curryRight<TResult extends Function>(
10341 func: Function,
10342 arity?: number): TResult;
10343 }
10344
10345 interface LoDashImplicitObjectWrapper<T> {
10346 /**
10347 * @see _.curryRight
10348 **/
10349 curryRight<TResult extends Function>(arity?: number): LoDashImplicitObjectWrapper<TResult>;
10350 }
10351
10352 //_.debounce
10353 interface DebounceSettings {
10354 /**
10355 * Specify invoking on the leading edge of the timeout.
10356 */
10357 leading?: boolean;
10358
10359 /**
10360 * The maximum time func is allowed to be delayed before it’s invoked.
10361 */
10362 maxWait?: number;
10363
10364 /**
10365 * Specify invoking on the trailing edge of the timeout.
10366 */
10367 trailing?: boolean;
10368 }
10369
10370 interface LoDashStatic {
10371 /**
10372 * Creates a debounced function that delays invoking func until after wait milliseconds have elapsed since
10373 * the last time the debounced function was invoked. The debounced function comes with a cancel method to
10374 * cancel delayed invocations and a flush method to immediately invoke them. Provide an options object to
10375 * indicate that func should be invoked on the leading and/or trailing edge of the wait timeout. Subsequent
10376 * calls to the debounced function return the result of the last func invocation.
10377 *
10378 * Note: If leading and trailing options are true, func is invoked on the trailing edge of the timeout only
10379 * if the the debounced function is invoked more than once during the wait timeout.
10380 *
10381 * See David Corbacho’s article for details over the differences between _.debounce and _.throttle.
10382 *
10383 * @param func The function to debounce.
10384 * @param wait The number of milliseconds to delay.
10385 * @param options The options object.
10386 * @param options.leading Specify invoking on the leading edge of the timeout.
10387 * @param options.maxWait The maximum time func is allowed to be delayed before it’s invoked.
10388 * @param options.trailing Specify invoking on the trailing edge of the timeout.
10389 * @return Returns the new debounced function.
10390 */
10391 debounce<T extends Function>(
10392 func: T,
10393 wait?: number,
10394 options?: DebounceSettings
10395 ): T & Cancelable;
10396 }
10397
10398 interface LoDashImplicitObjectWrapper<T> {
10399 /**
10400 * @see _.debounce
10401 */
10402 debounce(
10403 wait?: number,
10404 options?: DebounceSettings
10405 ): LoDashImplicitObjectWrapper<T & Cancelable>;
10406 }
10407
10408 interface LoDashExplicitObjectWrapper<T> {
10409 /**
10410 * @see _.debounce
10411 */
10412 debounce(
10413 wait?: number,
10414 options?: DebounceSettings
10415 ): LoDashExplicitObjectWrapper<T & Cancelable>;
10416 }
10417
10418 //_.defer
10419 interface LoDashStatic {
10420 /**
10421 * Defers invoking the func until the current call stack has cleared. Any additional arguments are provided to
10422 * func when it’s invoked.
10423 *
10424 * @param func The function to defer.
10425 * @param args The arguments to invoke the function with.
10426 * @return Returns the timer id.
10427 */
10428 defer<T extends Function>(
10429 func: T,
10430 ...args: any[]
10431 ): number;
10432 }
10433
10434 interface LoDashImplicitObjectWrapper<T> {
10435 /**
10436 * @see _.defer
10437 */
10438 defer(...args: any[]): LoDashImplicitWrapper<number>;
10439 }
10440
10441 interface LoDashExplicitObjectWrapper<T> {
10442 /**
10443 * @see _.defer
10444 */
10445 defer(...args: any[]): LoDashExplicitWrapper<number>;
10446 }
10447
10448 //_.delay
10449 interface LoDashStatic {
10450 /**
10451 * Invokes func after wait milliseconds. Any additional arguments are provided to func when it’s invoked.
10452 *
10453 * @param func The function to delay.
10454 * @param wait The number of milliseconds to delay invocation.
10455 * @param args The arguments to invoke the function with.
10456 * @return Returns the timer id.
10457 */
10458 delay<T extends Function>(
10459 func: T,
10460 wait: number,
10461 ...args: any[]
10462 ): number;
10463 }
10464
10465 interface LoDashImplicitObjectWrapper<T> {
10466 /**
10467 * @see _.delay
10468 */
10469 delay(
10470 wait: number,
10471 ...args: any[]
10472 ): LoDashImplicitWrapper<number>;
10473 }
10474
10475 interface LoDashExplicitObjectWrapper<T> {
10476 /**
10477 * @see _.delay
10478 */
10479 delay(
10480 wait: number,
10481 ...args: any[]
10482 ): LoDashExplicitWrapper<number>;
10483 }
10484
10485 interface LoDashStatic {
10486 /**
10487 * Creates a function that invokes `func` with arguments reversed.
10488 *
10489 * @static
10490 * @memberOf _
10491 * @category Function
10492 * @param {Function} func The function to flip arguments for.
10493 * @returns {Function} Returns the new function.
10494 * @example
10495 *
10496 * var flipped = _.flip(function() {
10497 * return _.toArray(arguments);
10498 * });
10499 *
10500 * flipped('a', 'b', 'c', 'd');
10501 * // => ['d', 'c', 'b', 'a']
10502 */
10503 flip<T extends Function>(func: T): T;
10504 }
10505
10506 interface LoDashImplicitObjectWrapper<T> {
10507 /**
10508 * @see _.flip
10509 */
10510 flip(): LoDashImplicitObjectWrapper<T>;
10511 }
10512
10513 interface LoDashExplicitObjectWrapper<T> {
10514 /**
10515 * @see _.flip
10516 */
10517 flip(): LoDashExplicitObjectWrapper<T>;
10518 }
10519
10520 //_.flow
10521 interface LoDashStatic {
10522 /**
10523 * Creates a function that returns the result of invoking the provided functions with the this binding of the
10524 * created function, where each successive invocation is supplied the return value of the previous.
10525 *
10526 * @param funcs Functions to invoke.
10527 * @return Returns the new function.
10528 */
10529 // 0-argument first function
10530 flow<R1, R2>(f1: () => R1, f2: (a: R1) => R2): () => R2;
10531 flow<R1, R2, R3>(f1: () => R1, f2: (a: R1) => R2, f3: (a: R2) => R3): () => R3;
10532 flow<R1, R2, R3, R4>(f1: () => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4): () => R4;
10533 flow<R1, R2, R3, R4, R5>(f1: () => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5): () => R5;
10534 flow<R1, R2, R3, R4, R5, R6>(f1: () => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6): () => R6;
10535 flow<R1, R2, R3, R4, R5, R6, R7>(f1: () => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7): () => R7;
10536 // 1-argument first function
10537 flow<A1, R1, R2>(f1: (a1: A1) => R1, f2: (a: R1) => R2): (a1: A1) => R2;
10538 flow<A1, R1, R2, R3>(f1: (a1: A1) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3): (a1: A1) => R3;
10539 flow<A1, R1, R2, R3, R4>(f1: (a1: A1) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4): (a1: A1) => R4;
10540 flow<A1, R1, R2, R3, R4, R5>(f1: (a1: A1) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5): (a1: A1) => R5;
10541 flow<A1, R1, R2, R3, R4, R5, R6>(f1: (a1: A1) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6): (a1: A1) => R6;
10542 flow<A1, R1, R2, R3, R4, R5, R6, R7>(f1: (a1: A1) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7): (a1: A1) => R7;
10543 // 2-argument first function
10544 flow<A1, A2, R1, R2>(f1: (a1: A1, a2: A2) => R1, f2: (a: R1) => R2): (a1: A1, a2: A2) => R2;
10545 flow<A1, A2, R1, R2, R3>(f1: (a1: A1, a2: A2) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3): (a1: A1, a2: A2) => R3;
10546 flow<A1, A2, R1, R2, R3, R4>(f1: (a1: A1, a2: A2) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4): (a1: A1, a2: A2) => R4;
10547 flow<A1, A2, R1, R2, R3, R4, R5>(f1: (a1: A1, a2: A2) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5): (a1: A1, a2: A2) => R5;
10548 flow<A1, A2, R1, R2, R3, R4, R5, R6>(f1: (a1: A1, a2: A2) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6): (a1: A1, a2: A2) => R6;
10549 flow<A1, A2, R1, R2, R3, R4, R5, R6, R7>(f1: (a1: A1, a2: A2) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7): (a1: A1, a2: A2) => R7;
10550 // 3-argument first function
10551 flow<A1, A2, A3, R1, R2>(f1: (a1: A1, a2: A2, a3: A3) => R1, f2: (a: R1) => R2): (a1: A1, a2: A2, a3: A3) => R2;
10552 flow<A1, A2, A3, R1, R2, R3>(f1: (a1: A1, a2: A2, a3: A3) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3): (a1: A1, a2: A2, a3: A3) => R3;
10553 flow<A1, A2, A3, R1, R2, R3, R4>(f1: (a1: A1, a2: A2, a3: A3) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4): (a1: A1, a2: A2, a3: A3) => R4;
10554 flow<A1, A2, A3, R1, R2, R3, R4, R5>(f1: (a1: A1, a2: A2, a3: A3) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5): (a1: A1, a2: A2, a3: A3) => R5;
10555 flow<A1, A2, A3, R1, R2, R3, R4, R5, R6>(f1: (a1: A1, a2: A2, a3: A3) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6): (a1: A1, a2: A2, a3: A3) => R6;
10556 flow<A1, A2, A3, R1, R2, R3, R4, R5, R6, R7>(f1: (a1: A1, a2: A2, a3: A3) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7): (a1: A1, a2: A2, a3: A3) => R7;
10557 // 4-argument first function
10558 flow<A1, A2, A3, A4, R1, R2>(f1: (a1: A1, a2: A2, a3: A3, a4: A4) => R1, f2: (a: R1) => R2): (a1: A1, a2: A2, a3: A3, a4: A4) => R2;
10559 flow<A1, A2, A3, A4, R1, R2, R3>(f1: (a1: A1, a2: A2, a3: A3, a4: A4) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3): (a1: A1, a2: A2, a3: A3, a4: A4) => R3;
10560 flow<A1, A2, A3, A4, R1, R2, R3, R4>(f1: (a1: A1, a2: A2, a3: A3, a4: A4) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4): (a1: A1, a2: A2, a3: A3, a4: A4) => R4;
10561 flow<A1, A2, A3, A4, R1, R2, R3, R4, R5>(f1: (a1: A1, a2: A2, a3: A3, a4: A4) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5): (a1: A1, a2: A2, a3: A3, a4: A4) => R5;
10562 flow<A1, A2, A3, A4, R1, R2, R3, R4, R5, R6>(f1: (a1: A1, a2: A2, a3: A3, a4: A4) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6): (a1: A1, a2: A2, a3: A3, a4: A4) => R6;
10563 flow<A1, A2, A3, A4, R1, R2, R3, R4, R5, R6, R7>(f1: (a1: A1, a2: A2, a3: A3, a4: A4) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7): (a1: A1, a2: A2, a3: A3, a4: A4) => R7;
10564 // generic function
10565 flow<TResult extends Function>(...funcs: Function[]): TResult;
10566 }
10567
10568 interface LoDashImplicitObjectWrapper<T> {
10569 /**
10570 * @see _.flow
10571 */
10572 flow<TResult extends Function>(...funcs: Function[]): LoDashImplicitObjectWrapper<TResult>;
10573 }
10574
10575 interface LoDashExplicitObjectWrapper<T> {
10576 /**
10577 * @see _.flow
10578 */
10579 flow<TResult extends Function>(...funcs: Function[]): LoDashExplicitObjectWrapper<TResult>;
10580 }
10581
10582 //_.flowRight
10583 interface LoDashStatic {
10584 /**
10585 * This method is like _.flow except that it creates a function that invokes the provided functions from right
10586 * to left.
10587 *
10588 * @param funcs Functions to invoke.
10589 * @return Returns the new function.
10590 */
10591 flowRight<TResult extends Function>(...funcs: Function[]): TResult;
10592 }
10593
10594 interface LoDashImplicitObjectWrapper<T> {
10595 /**
10596 * @see _.flowRight
10597 */
10598 flowRight<TResult extends Function>(...funcs: Function[]): LoDashImplicitObjectWrapper<TResult>;
10599 }
10600
10601 interface LoDashExplicitObjectWrapper<T> {
10602 /**
10603 * @see _.flowRight
10604 */
10605 flowRight<TResult extends Function>(...funcs: Function[]): LoDashExplicitObjectWrapper<TResult>;
10606 }
10607
10608 //_.memoize
10609 interface MemoizedFunction extends Function {
10610 cache: MapCache;
10611 }
10612
10613 interface LoDashStatic {
10614 /**
10615 * Creates a function that memoizes the result of func. If resolver is provided it determines the cache key for
10616 * storing the result based on the arguments provided to the memoized function. By default, the first argument
10617 * provided to the memoized function is coerced to a string and used as the cache key. The func is invoked with
10618 * the this binding of the memoized function.
10619 *
10620 * @param func The function to have its output memoized.
10621 * @param resolver The function to resolve the cache key.
10622 * @return Returns the new memoizing function.
10623 */
10624 memoize: {
10625 <T extends Function>(func: T, resolver?: Function): T & MemoizedFunction;
10626 Cache: MapCacheConstructor;
10627 };
10628 }
10629
10630 interface LoDashImplicitObjectWrapper<T> {
10631 /**
10632 * @see _.memoize
10633 */
10634 memoize(resolver?: Function): LoDashImplicitObjectWrapper<T & MemoizedFunction>;
10635 }
10636
10637 interface LoDashExplicitObjectWrapper<T> {
10638 /**
10639 * @see _.memoize
10640 */
10641 memoize(resolver?: Function): LoDashExplicitObjectWrapper<T & MemoizedFunction>;
10642 }
10643
10644 //_.overArgs (was _.modArgs)
10645 interface LoDashStatic {
10646 /**
10647 * Creates a function that runs each argument through a corresponding transform function.
10648 *
10649 * @param func The function to wrap.
10650 * @param transforms The functions to transform arguments, specified as individual functions or arrays
10651 * of functions.
10652 * @return Returns the new function.
10653 */
10654 overArgs<T extends Function, TResult extends Function>(
10655 func: T,
10656 ...transforms: Function[]
10657 ): TResult;
10658
10659 /**
10660 * @see _.overArgs
10661 */
10662 overArgs<T extends Function, TResult extends Function>(
10663 func: T,
10664 transforms: Function[]
10665 ): TResult;
10666 }
10667
10668 interface LoDashImplicitObjectWrapper<T> {
10669 /**
10670 * @see _.overArgs
10671 */
10672 overArgs<TResult extends Function>(...transforms: Function[]): LoDashImplicitObjectWrapper<TResult>;
10673
10674 /**
10675 * @see _.overArgs
10676 */
10677 overArgs<TResult extends Function>(transforms: Function[]): LoDashImplicitObjectWrapper<TResult>;
10678 }
10679
10680 interface LoDashExplicitObjectWrapper<T> {
10681 /**
10682 * @see _.overArgs
10683 */
10684 overArgs<TResult extends Function>(...transforms: Function[]): LoDashExplicitObjectWrapper<TResult>;
10685
10686 /**
10687 * @see _.overArgs
10688 */
10689 overArgs<TResult extends Function>(transforms: Function[]): LoDashExplicitObjectWrapper<TResult>;
10690 }
10691
10692 //_.negate
10693 interface LoDashStatic {
10694 /**
10695 * Creates a function that negates the result of the predicate func. The func predicate is invoked with
10696 * the this binding and arguments of the created function.
10697 *
10698 * @param predicate The predicate to negate.
10699 * @return Returns the new function.
10700 */
10701 negate<T extends Function>(predicate: T): (...args: any[]) => boolean;
10702
10703 /**
10704 * @see _.negate
10705 */
10706 negate<T extends Function, TResult extends Function>(predicate: T): TResult;
10707 }
10708
10709 interface LoDashImplicitObjectWrapper<T> {
10710 /**
10711 * @see _.negate
10712 */
10713 negate(): LoDashImplicitObjectWrapper<(...args: any[]) => boolean>;
10714
10715 /**
10716 * @see _.negate
10717 */
10718 negate<TResult extends Function>(): LoDashImplicitObjectWrapper<TResult>;
10719 }
10720
10721 interface LoDashExplicitObjectWrapper<T> {
10722 /**
10723 * @see _.negate
10724 */
10725 negate(): LoDashExplicitObjectWrapper<(...args: any[]) => boolean>;
10726
10727 /**
10728 * @see _.negate
10729 */
10730 negate<TResult extends Function>(): LoDashExplicitObjectWrapper<TResult>;
10731 }
10732
10733 //_.once
10734 interface LoDashStatic {
10735 /**
10736 * Creates a function that is restricted to invoking func once. Repeat calls to the function return the value
10737 * of the first call. The func is invoked with the this binding and arguments of the created function.
10738 *
10739 * @param func The function to restrict.
10740 * @return Returns the new restricted function.
10741 */
10742 once<T extends Function>(func: T): T;
10743 }
10744
10745 interface LoDashImplicitObjectWrapper<T> {
10746 /**
10747 * @see _.once
10748 */
10749 once(): LoDashImplicitObjectWrapper<T>;
10750 }
10751
10752 interface LoDashExplicitObjectWrapper<T> {
10753 /**
10754 * @see _.once
10755 */
10756 once(): LoDashExplicitObjectWrapper<T>;
10757 }
10758
10759 //_.partial
10760 interface LoDashStatic {
10761 /**
10762 * Creates a function that, when called, invokes func with any additional partial arguments
10763 * prepended to those provided to the new function. This method is similar to _.bind except
10764 * it does not alter the this binding.
10765 * @param func The function to partially apply arguments to.
10766 * @param args Arguments to be partially applied.
10767 * @return The new partially applied function.
10768 **/
10769 partial: Partial;
10770 }
10771
10772 type PH = LoDashStatic;
10773
10774 type Function0<R> = () => R;
10775 type Function1<T1, R> = (t1: T1) => R;
10776 type Function2<T1, T2, R> = (t1: T1, t2: T2) => R;
10777 type Function3<T1, T2, T3, R> = (t1: T1, t2: T2, t3: T3) => R;
10778 type Function4<T1, T2, T3, T4, R> = (t1: T1, t2: T2, t3: T3, t4: T4) => R;
10779
10780 interface Partial {
10781 // arity 0
10782 <R>(func: Function0<R>): Function0<R>;
10783 // arity 1
10784 <T1, R>(func: Function1<T1, R>): Function1<T1, R>;
10785 <T1, R>(func: Function1<T1, R>, arg1: T1): Function0<R>;
10786 // arity 2
10787 <T1, T2, R>(func: Function2<T1, T2, R>): Function2<T1, T2, R>;
10788 <T1, T2, R>(func: Function2<T1, T2, R>, arg1: T1): Function1< T2, R>;
10789 <T1, T2, R>(func: Function2<T1, T2, R>, plc1: PH, arg2: T2): Function1<T1, R>;
10790 <T1, T2, R>(func: Function2<T1, T2, R>, arg1: T1, arg2: T2): Function0< R>;
10791 // arity 3
10792 <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>): Function3<T1, T2, T3, R>;
10793 <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>, arg1: T1): Function2< T2, T3, R>;
10794 <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>, plc1: PH, arg2: T2): Function2<T1, T3, R>;
10795 <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>, arg1: T1, arg2: T2): Function1< T3, R>;
10796 <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>, plc1: PH, plc2: PH, arg3: T3): Function2<T1, T2, R>;
10797 <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>, arg1: T1, plc2: PH, arg3: T3): Function1< T2, R>;
10798 <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>, plc1: PH, arg2: T2, arg3: T3): Function1<T1, R>;
10799 <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>, arg1: T1, arg2: T2, arg3: T3): Function0< R>;
10800 // arity 4
10801 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>): Function4<T1, T2, T3, T4, R>;
10802 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1): Function3< T2, T3, T4, R>;
10803 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, plc1: PH, arg2: T2): Function3<T1, T3, T4, R>;
10804 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1, arg2: T2): Function2< T3, T4, R>;
10805 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, plc1: PH, plc2: PH, arg3: T3): Function3<T1, T2, T4, R>;
10806 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1, plc2: PH, arg3: T3): Function2< T2, T4, R>;
10807 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, plc1: PH, arg2: T2, arg3: T3): Function2<T1, T4, R>;
10808 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1, arg2: T2, arg3: T3): Function1< T4, R>;
10809 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, plc1: PH, plc2: PH, plc3: PH, arg4: T4): Function3<T1, T2, T3, R>;
10810 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1, plc2: PH, plc3: PH, arg4: T4): Function2< T2, T3, R>;
10811 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, plc1: PH, arg2: T2, plc3: PH, arg4: T4): Function2<T1, T3, R>;
10812 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1, arg2: T2, plc3: PH, arg4: T4): Function1< T3, R>;
10813 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, plc1: PH, plc2: PH, arg3: T3, arg4: T4): Function2<T1, T2, R>;
10814 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1, plc2: PH, arg3: T3, arg4: T4): Function1< T2, R>;
10815 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, plc1: PH, arg2: T2, arg3: T3, arg4: T4): Function1<T1, R>;
10816 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1, arg2: T2, arg3: T3, arg4: T4): Function0< R>;
10817 // catch-all
10818 (func: Function, ...args: any[]): Function;
10819 }
10820
10821 //_.partialRight
10822 interface LoDashStatic {
10823 /**
10824 * This method is like _.partial except that partial arguments are appended to those provided
10825 * to the new function.
10826 * @param func The function to partially apply arguments to.
10827 * @param args Arguments to be partially applied.
10828 * @return The new partially applied function.
10829 **/
10830 partialRight: PartialRight;
10831 }
10832
10833 interface PartialRight {
10834 // arity 0
10835 <R>(func: Function0<R>): Function0<R>;
10836 // arity 1
10837 <T1, R>(func: Function1<T1, R>): Function1<T1, R>;
10838 <T1, R>(func: Function1<T1, R>, arg1: T1): Function0<R>;
10839 // arity 2
10840 <T1, T2, R>(func: Function2<T1, T2, R>): Function2<T1, T2, R>;
10841 <T1, T2, R>(func: Function2<T1, T2, R>, arg1: T1, plc2: PH): Function1< T2, R>;
10842 <T1, T2, R>(func: Function2<T1, T2, R>, arg2: T2): Function1<T1, R>;
10843 <T1, T2, R>(func: Function2<T1, T2, R>, arg1: T1, arg2: T2): Function0< R>;
10844 // arity 3
10845 <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>): Function3<T1, T2, T3, R>;
10846 <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>, arg1: T1, plc2: PH, plc3: PH): Function2< T2, T3, R>;
10847 <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>, arg2: T2, plc3: PH): Function2<T1, T3, R>;
10848 <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>, arg1: T1, arg2: T2, plc3: PH): Function1< T3, R>;
10849 <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>, arg3: T3): Function2<T1, T2, R>;
10850 <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>, arg1: T1, plc2: PH, arg3: T3): Function1< T2, R>;
10851 <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>, arg2: T2, arg3: T3): Function1<T1, R>;
10852 <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>, arg1: T1, arg2: T2, arg3: T3): Function0< R>;
10853 // arity 4
10854 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>): Function4<T1, T2, T3, T4, R>;
10855 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1, plc2: PH, plc3: PH, plc4: PH): Function3< T2, T3, T4, R>;
10856 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg2: T2, plc3: PH, plc4: PH): Function3<T1, T3, T4, R>;
10857 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1, arg2: T2, plc3: PH, plc4: PH): Function2< T3, T4, R>;
10858 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg3: T3, plc4: PH): Function3<T1, T2, T4, R>;
10859 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1, plc2: PH, arg3: T3, plc4: PH): Function2< T2, T4, R>;
10860 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg2: T2, arg3: T3, plc4: PH): Function2<T1, T4, R>;
10861 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1, arg2: T2, arg3: T3, plc4: PH): Function1< T4, R>;
10862 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg4: T4): Function3<T1, T2, T3, R>;
10863 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1, plc2: PH, plc3: PH, arg4: T4): Function2< T2, T3, R>;
10864 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg2: T2, plc3: PH, arg4: T4): Function2<T1, T3, R>;
10865 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1, arg2: T2, plc3: PH, arg4: T4): Function1< T3, R>;
10866 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg3: T3, arg4: T4): Function2<T1, T2, R>;
10867 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1, plc2: PH, arg3: T3, arg4: T4): Function1< T2, R>;
10868 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg2: T2, arg3: T3, arg4: T4): Function1<T1, R>;
10869 <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1, arg2: T2, arg3: T3, arg4: T4): Function0< R>;
10870 // catch-all
10871 (func: Function, ...args: any[]): Function;
10872 }
10873
10874 //_.rearg
10875 interface LoDashStatic {
10876 /**
10877 * Creates a function that invokes func with arguments arranged according to the specified indexes where the
10878 * argument value at the first index is provided as the first argument, the argument value at the second index
10879 * is provided as the second argument, and so on.
10880 * @param func The function to rearrange arguments for.
10881 * @param indexes The arranged argument indexes, specified as individual indexes or arrays of indexes.
10882 * @return Returns the new function.
10883 */
10884 rearg<TResult extends Function>(func: Function, indexes: number[]): TResult;
10885
10886 /**
10887 * @see _.rearg
10888 */
10889 rearg<TResult extends Function>(func: Function, ...indexes: number[]): TResult;
10890 }
10891
10892 interface LoDashImplicitObjectWrapper<T> {
10893 /**
10894 * @see _.rearg
10895 */
10896 rearg<TResult extends Function>(indexes: number[]): LoDashImplicitObjectWrapper<TResult>;
10897
10898 /**
10899 * @see _.rearg
10900 */
10901 rearg<TResult extends Function>(...indexes: number[]): LoDashImplicitObjectWrapper<TResult>;
10902 }
10903
10904 //_.rest
10905 interface LoDashStatic {
10906 /**
10907 * Creates a function that invokes func with the this binding of the created function and arguments from start
10908 * and beyond provided as an array.
10909 *
10910 * Note: This method is based on the rest parameter.
10911 *
10912 * @param func The function to apply a rest parameter to.
10913 * @param start The start position of the rest parameter.
10914 * @return Returns the new function.
10915 */
10916 rest<TResult extends Function>(
10917 func: Function,
10918 start?: number
10919 ): TResult;
10920
10921 /**
10922 * @see _.rest
10923 */
10924 rest<TResult extends Function, TFunc extends Function>(
10925 func: TFunc,
10926 start?: number
10927 ): TResult;
10928 }
10929
10930 interface LoDashImplicitObjectWrapper<T> {
10931 /**
10932 * @see _.rest
10933 */
10934 rest<TResult extends Function>(start?: number): LoDashImplicitObjectWrapper<TResult>;
10935 }
10936
10937 interface LoDashExplicitObjectWrapper<T> {
10938 /**
10939 * @see _.rest
10940 */
10941 rest<TResult extends Function>(start?: number): LoDashExplicitObjectWrapper<TResult>;
10942 }
10943
10944 //_.spread
10945 interface LoDashStatic {
10946 /**
10947 * Creates a function that invokes func with the this binding of the created function and an array of arguments
10948 * much like Function#apply.
10949 *
10950 * Note: This method is based on the spread operator.
10951 *
10952 * @param func The function to spread arguments over.
10953 * @return Returns the new function.
10954 */
10955 spread<F extends Function, T extends Function>(func: F): T;
10956
10957 /**
10958 * @see _.spread
10959 */
10960 spread<T extends Function>(func: Function): T;
10961 }
10962
10963 interface LoDashImplicitObjectWrapper<T> {
10964 /**
10965 * @see _.spread
10966 */
10967 spread<T extends Function>(): LoDashImplicitObjectWrapper<T>;
10968 }
10969
10970 interface LoDashExplicitObjectWrapper<T> {
10971 /**
10972 * @see _.spread
10973 */
10974 spread<T extends Function>(): LoDashExplicitObjectWrapper<T>;
10975 }
10976
10977 //_.throttle
10978 interface ThrottleSettings {
10979 /**
10980 * If you'd like to disable the leading-edge call, pass this as false.
10981 */
10982 leading?: boolean;
10983
10984 /**
10985 * If you'd like to disable the execution on the trailing-edge, pass false.
10986 */
10987 trailing?: boolean;
10988 }
10989
10990 interface LoDashStatic {
10991 /**
10992 * Creates a throttled function that only invokes func at most once per every wait milliseconds. The throttled
10993 * function comes with a cancel method to cancel delayed invocations and a flush method to immediately invoke
10994 * them. Provide an options object to indicate that func should be invoked on the leading and/or trailing edge
10995 * of the wait timeout. Subsequent calls to the throttled function return the result of the last func call.
10996 *
10997 * Note: If leading and trailing options are true, func is invoked on the trailing edge of the timeout only if
10998 * the the throttled function is invoked more than once during the wait timeout.
10999 *
11000 * @param func The function to throttle.
11001 * @param wait The number of milliseconds to throttle invocations to.
11002 * @param options The options object.
11003 * @param options.leading Specify invoking on the leading edge of the timeout.
11004 * @param options.trailing Specify invoking on the trailing edge of the timeout.
11005 * @return Returns the new throttled function.
11006 */
11007 throttle<T extends Function>(
11008 func: T,
11009 wait?: number,
11010 options?: ThrottleSettings
11011 ): T & Cancelable;
11012 }
11013
11014 interface LoDashImplicitObjectWrapper<T> {
11015 /**
11016 * @see _.throttle
11017 */
11018 throttle(
11019 wait?: number,
11020 options?: ThrottleSettings
11021 ): LoDashImplicitObjectWrapper<T & Cancelable>;
11022 }
11023
11024 interface LoDashExplicitObjectWrapper<T> {
11025 /**
11026 * @see _.throttle
11027 */
11028 throttle(
11029 wait?: number,
11030 options?: ThrottleSettings
11031 ): LoDashExplicitObjectWrapper<T & Cancelable>;
11032 }
11033
11034 //_.unary
11035 interface LoDashStatic {
11036 /**
11037 * Creates a function that accepts up to one argument, ignoring any
11038 * additional arguments.
11039 *
11040 * @static
11041 * @memberOf _
11042 * @category Function
11043 * @param {Function} func The function to cap arguments for.
11044 * @returns {Function} Returns the new function.
11045 * @example
11046 *
11047 * _.map(['6', '8', '10'], _.unary(parseInt));
11048 * // => [6, 8, 10]
11049 */
11050 unary<T extends Function>(func: T): T;
11051 }
11052
11053 interface LoDashImplicitObjectWrapper<T> {
11054 /**
11055 * @see _.unary
11056 */
11057 unary(): LoDashImplicitObjectWrapper<T>;
11058 }
11059
11060 interface LoDashExplicitObjectWrapper<T> {
11061 /**
11062 * @see _.unary
11063 */
11064 unary(): LoDashExplicitObjectWrapper<T>;
11065 }
11066
11067 //_.wrap
11068 interface LoDashStatic {
11069 /**
11070 * Creates a function that provides value to the wrapper function as its first argument. Any additional
11071 * arguments provided to the function are appended to those provided to the wrapper function. The wrapper is
11072 * invoked with the this binding of the created function.
11073 *
11074 * @param value The value to wrap.
11075 * @param wrapper The wrapper function.
11076 * @return Returns the new function.
11077 */
11078 wrap<V, W extends Function, R extends Function>(
11079 value: V,
11080 wrapper: W
11081 ): R;
11082
11083 /**
11084 * @see _.wrap
11085 */
11086 wrap<V, R extends Function>(
11087 value: V,
11088 wrapper: Function
11089 ): R;
11090
11091 /**
11092 * @see _.wrap
11093 */
11094 wrap<R extends Function>(
11095 value: any,
11096 wrapper: Function
11097 ): R;
11098 }
11099
11100 interface LoDashImplicitWrapper<T> {
11101 /**
11102 * @see _.wrap
11103 */
11104 wrap<W extends Function, R extends Function>(wrapper: W): LoDashImplicitObjectWrapper<R>;
11105
11106 /**
11107 * @see _.wrap
11108 */
11109 wrap<R extends Function>(wrapper: Function): LoDashImplicitObjectWrapper<R>;
11110 }
11111
11112 interface LoDashImplicitArrayWrapper<T> {
11113 /**
11114 * @see _.wrap
11115 */
11116 wrap<W extends Function, R extends Function>(wrapper: W): LoDashImplicitObjectWrapper<R>;
11117
11118 /**
11119 * @see _.wrap
11120 */
11121 wrap<R extends Function>(wrapper: Function): LoDashImplicitObjectWrapper<R>;
11122 }
11123
11124 interface LoDashImplicitObjectWrapper<T> {
11125 /**
11126 * @see _.wrap
11127 */
11128 wrap<W extends Function, R extends Function>(wrapper: W): LoDashImplicitObjectWrapper<R>;
11129
11130 /**
11131 * @see _.wrap
11132 */
11133 wrap<R extends Function>(wrapper: Function): LoDashImplicitObjectWrapper<R>;
11134 }
11135
11136 interface LoDashExplicitWrapper<T> {
11137 /**
11138 * @see _.wrap
11139 */
11140 wrap<W extends Function, R extends Function>(wrapper: W): LoDashExplicitObjectWrapper<R>;
11141
11142 /**
11143 * @see _.wrap
11144 */
11145 wrap<R extends Function>(wrapper: Function): LoDashExplicitObjectWrapper<R>;
11146 }
11147
11148 interface LoDashExplicitArrayWrapper<T> {
11149 /**
11150 * @see _.wrap
11151 */
11152 wrap<W extends Function, R extends Function>(wrapper: W): LoDashExplicitObjectWrapper<R>;
11153
11154 /**
11155 * @see _.wrap
11156 */
11157 wrap<R extends Function>(wrapper: Function): LoDashExplicitObjectWrapper<R>;
11158 }
11159
11160 interface LoDashExplicitObjectWrapper<T> {
11161 /**
11162 * @see _.wrap
11163 */
11164 wrap<W extends Function, R extends Function>(wrapper: W): LoDashExplicitObjectWrapper<R>;
11165
11166 /**
11167 * @see _.wrap
11168 */
11169 wrap<R extends Function>(wrapper: Function): LoDashExplicitObjectWrapper<R>;
11170 }
11171
11172 /********
11173 * Lang *
11174 ********/
11175
11176 //_.castArray
11177 interface LoDashStatic {
11178 /**
11179 * Casts value as an array if it’s not one.
11180 *
11181 * @param value The value to inspect.
11182 * @return Returns the cast array.
11183 */
11184 castArray<T>(value?: Many<T>): T[];
11185 }
11186
11187 interface LoDashImplicitWrapper<T> {
11188 /**
11189 * @see _.castArray
11190 */
11191 castArray(): LoDashImplicitArrayWrapper<T>;
11192 }
11193
11194 interface LoDashImplicitArrayWrapper<T> {
11195 /**
11196 * @see _.castArray
11197 */
11198 castArray(): LoDashImplicitArrayWrapper<T>;
11199 }
11200
11201 interface LoDashImplicitObjectWrapper<T> {
11202 /**
11203 * @see _.castArray
11204 */
11205 castArray(): LoDashImplicitArrayWrapper<T>;
11206 }
11207
11208 interface LoDashExplicitWrapper<T> {
11209 /**
11210 * @see _.castArray
11211 */
11212 castArray(): LoDashExplicitArrayWrapper<T>;
11213 }
11214
11215 interface LoDashExplicitArrayWrapper<T> {
11216 /**
11217 * @see _.castArray
11218 */
11219 castArray(): LoDashExplicitArrayWrapper<T>;
11220 }
11221
11222 interface LoDashExplicitObjectWrapper<T> {
11223 /**
11224 * @see _.castArray
11225 */
11226 castArray(): LoDashExplicitArrayWrapper<T>;
11227 }
11228
11229 //_.clone
11230 interface LoDashStatic {
11231 /**
11232 * Creates a shallow clone of value.
11233 *
11234 * Note: This method is loosely based on the structured clone algorithm and supports cloning arrays,
11235 * array buffers, booleans, date objects, maps, numbers, Object objects, regexes, sets, strings, symbols,
11236 * and typed arrays. The own enumerable properties of arguments objects are cloned as plain objects. An empty
11237 * object is returned for uncloneable values such as error objects, functions, DOM nodes, and WeakMaps.
11238 *
11239 * @param value The value to clone.
11240 * @return Returns the cloned value.
11241 */
11242 clone<T>(value: T): T;
11243 }
11244
11245 interface LoDashImplicitWrapper<T> {
11246 /**
11247 * @see _.clone
11248 */
11249 clone(): T;
11250 }
11251
11252 interface LoDashImplicitArrayWrapper<T> {
11253 /**
11254 * @see _.clone
11255 */
11256 clone(): T[];
11257 }
11258
11259 interface LoDashImplicitObjectWrapper<T> {
11260 /**
11261 * @see _.clone
11262 */
11263 clone(): T;
11264 }
11265
11266 interface LoDashExplicitWrapper<T> {
11267 /**
11268 * @see _.clone
11269 */
11270 clone(): LoDashExplicitWrapper<T>;
11271 }
11272
11273 interface LoDashExplicitArrayWrapper<T> {
11274 /**
11275 * @see _.clone
11276 */
11277 clone(): LoDashExplicitArrayWrapper<T>;
11278 }
11279
11280 interface LoDashExplicitObjectWrapper<T> {
11281 /**
11282 * @see _.clone
11283 */
11284 clone(): LoDashExplicitObjectWrapper<T>;
11285 }
11286
11287 //_.cloneDeep
11288 interface LoDashStatic {
11289 /**
11290 * This method is like _.clone except that it recursively clones value.
11291 *
11292 * @param value The value to recursively clone.
11293 * @return Returns the deep cloned value.
11294 */
11295 cloneDeep<T>(value: T): T;
11296 }
11297
11298 interface LoDashImplicitWrapper<T> {
11299 /**
11300 * @see _.cloneDeep
11301 */
11302 cloneDeep(): T;
11303 }
11304
11305 interface LoDashImplicitArrayWrapper<T> {
11306 /**
11307 * @see _.cloneDeep
11308 */
11309 cloneDeep(): T[];
11310 }
11311
11312 interface LoDashImplicitObjectWrapper<T> {
11313 /**
11314 * @see _.cloneDeep
11315 */
11316 cloneDeep(): T;
11317 }
11318
11319 interface LoDashExplicitWrapper<T> {
11320 /**
11321 * @see _.cloneDeep
11322 */
11323 cloneDeep(): LoDashExplicitWrapper<T>;
11324 }
11325
11326 interface LoDashExplicitArrayWrapper<T> {
11327 /**
11328 * @see _.cloneDeep
11329 */
11330 cloneDeep(): LoDashExplicitArrayWrapper<T>;
11331 }
11332
11333 interface LoDashExplicitObjectWrapper<T> {
11334 /**
11335 * @see _.cloneDeep
11336 */
11337 cloneDeep(): LoDashExplicitObjectWrapper<T>;
11338 }
11339
11340 //_.cloneDeepWith
11341 type CloneDeepWithCustomizer<TValue, TResult> = (value: TValue, key?: number|string, object?: any, stack?: any) => TResult;
11342
11343 interface LoDashStatic {
11344 /**
11345 * This method is like _.cloneWith except that it recursively clones value.
11346 *
11347 * @param value The value to recursively clone.
11348 * @param customizer The function to customize cloning.
11349 * @return Returns the deep cloned value.
11350 */
11351 cloneDeepWith<TResult>(
11352 value: any,
11353 customizer?: CloneDeepWithCustomizer<any, TResult>
11354 ): TResult;
11355
11356 /**
11357 * @see _.clonDeepeWith
11358 */
11359 cloneDeepWith<T, TResult>(
11360 value: T,
11361 customizer?: CloneDeepWithCustomizer<T, TResult>
11362 ): TResult;
11363 }
11364
11365 interface LoDashImplicitWrapper<T> {
11366 /**
11367 * @see _.cloneDeepWith
11368 */
11369 cloneDeepWith<TResult>(
11370 customizer?: CloneDeepWithCustomizer<T, TResult>
11371 ): TResult;
11372 }
11373
11374 interface LoDashImplicitArrayWrapper<T> {
11375 /**
11376 * @see _.cloneDeepWith
11377 */
11378 cloneDeepWith<TResult>(
11379 customizer?: CloneDeepWithCustomizer<T[], TResult>
11380 ): TResult;
11381 }
11382
11383 interface LoDashImplicitObjectWrapper<T> {
11384 /**
11385 * @see _.cloneDeepWith
11386 */
11387 cloneDeepWith<TResult>(
11388 customizer?: CloneDeepWithCustomizer<T, TResult>
11389 ): TResult;
11390 }
11391
11392 interface LoDashExplicitWrapper<T> {
11393 /**
11394 * @see _.cloneDeepWith
11395 */
11396 cloneDeepWith<TResult extends (number|string|boolean)>(
11397 customizer?: CloneDeepWithCustomizer<T, TResult>
11398 ): LoDashExplicitWrapper<TResult>;
11399
11400 /**
11401 * @see _.cloneDeepWith
11402 */
11403 cloneDeepWith<TResult>(
11404 customizer?: CloneDeepWithCustomizer<T, TResult[]>
11405 ): LoDashExplicitArrayWrapper<TResult>;
11406
11407 /**
11408 * @see _.cloneDeepWith
11409 */
11410 cloneDeepWith<TResult extends Object>(
11411 customizer?: CloneDeepWithCustomizer<T, TResult>
11412 ): LoDashExplicitObjectWrapper<TResult>;
11413 }
11414
11415 interface LoDashExplicitArrayWrapper<T> {
11416 /**
11417 * @see _.cloneDeepWith
11418 */
11419 cloneDeepWith<TResult extends (number|string|boolean)>(
11420 customizer?: CloneDeepWithCustomizer<T[], TResult>
11421 ): LoDashExplicitWrapper<TResult>;
11422
11423 /**
11424 * @see _.cloneDeepWith
11425 */
11426 cloneDeepWith<TResult>(
11427 customizer?: CloneDeepWithCustomizer<T[], TResult[]>
11428 ): LoDashExplicitArrayWrapper<TResult>;
11429
11430 /**
11431 * @see _.cloneDeepWith
11432 */
11433 cloneDeepWith<TResult extends Object>(
11434 customizer?: CloneDeepWithCustomizer<T[], TResult>
11435 ): LoDashExplicitObjectWrapper<TResult>;
11436 }
11437
11438 interface LoDashExplicitObjectWrapper<T> {
11439 /**
11440 * @see _.cloneDeepWith
11441 */
11442 cloneDeepWith<TResult extends (number|string|boolean)>(
11443 customizer?: CloneDeepWithCustomizer<T, TResult>
11444 ): LoDashExplicitWrapper<TResult>;
11445
11446 /**
11447 * @see _.cloneDeepWith
11448 */
11449 cloneDeepWith<TResult>(
11450 customizer?: CloneDeepWithCustomizer<T, TResult[]>
11451 ): LoDashExplicitArrayWrapper<TResult>;
11452
11453 /**
11454 * @see _.cloneDeepWith
11455 */
11456 cloneDeepWith<TResult extends Object>(
11457 customizer?: CloneDeepWithCustomizer<T, TResult>
11458 ): LoDashExplicitObjectWrapper<TResult>;
11459 }
11460
11461 //_.cloneWith
11462 type CloneWithCustomizer<TValue, TResult> = (value: TValue, key?: number|string, object?: any, stack?: any) => TResult;
11463
11464 interface LoDashStatic {
11465 /**
11466 * This method is like _.clone except that it accepts customizer which is invoked to produce the cloned value.
11467 * If customizer returns undefined cloning is handled by the method instead.
11468 *
11469 * @param value The value to clone.
11470 * @param customizer The function to customize cloning.
11471 * @return Returns the cloned value.
11472 */
11473 cloneWith<TResult>(
11474 value: any,
11475 customizer?: CloneWithCustomizer<any, TResult>
11476 ): TResult;
11477
11478 /**
11479 * @see _.cloneWith
11480 */
11481 cloneWith<T, TResult>(
11482 value: T,
11483 customizer?: CloneWithCustomizer<T, TResult>
11484 ): TResult;
11485 }
11486
11487 interface LoDashImplicitWrapper<T> {
11488 /**
11489 * @see _.cloneWith
11490 */
11491 cloneWith<TResult>(
11492 customizer?: CloneWithCustomizer<T, TResult>
11493 ): TResult;
11494 }
11495
11496 interface LoDashImplicitArrayWrapper<T> {
11497 /**
11498 * @see _.cloneWith
11499 */
11500 cloneWith<TResult>(
11501 customizer?: CloneWithCustomizer<T[], TResult>
11502 ): TResult;
11503 }
11504
11505 interface LoDashImplicitObjectWrapper<T> {
11506 /**
11507 * @see _.cloneWith
11508 */
11509 cloneWith<TResult>(
11510 customizer?: CloneWithCustomizer<T, TResult>
11511 ): TResult;
11512 }
11513
11514 interface LoDashExplicitWrapper<T> {
11515 /**
11516 * @see _.cloneWith
11517 */
11518 cloneWith<TResult extends (number|string|boolean)>(
11519 customizer?: CloneWithCustomizer<T, TResult>
11520 ): LoDashExplicitWrapper<TResult>;
11521
11522 /**
11523 * @see _.cloneWith
11524 */
11525 cloneWith<TResult>(
11526 customizer?: CloneWithCustomizer<T, TResult[]>
11527 ): LoDashExplicitArrayWrapper<TResult>;
11528
11529 /**
11530 * @see _.cloneWith
11531 */
11532 cloneWith<TResult extends Object>(
11533 customizer?: CloneWithCustomizer<T, TResult>
11534 ): LoDashExplicitObjectWrapper<TResult>;
11535 }
11536
11537 interface LoDashExplicitArrayWrapper<T> {
11538 /**
11539 * @see _.cloneWith
11540 */
11541 cloneWith<TResult extends (number|string|boolean)>(
11542 customizer?: CloneWithCustomizer<T[], TResult>
11543 ): LoDashExplicitWrapper<TResult>;
11544
11545 /**
11546 * @see _.cloneWith
11547 */
11548 cloneWith<TResult>(
11549 customizer?: CloneWithCustomizer<T[], TResult[]>
11550 ): LoDashExplicitArrayWrapper<TResult>;
11551
11552 /**
11553 * @see _.cloneWith
11554 */
11555 cloneWith<TResult extends Object>(
11556 customizer?: CloneWithCustomizer<T[], TResult>
11557 ): LoDashExplicitObjectWrapper<TResult>;
11558 }
11559
11560 interface LoDashExplicitObjectWrapper<T> {
11561 /**
11562 * @see _.cloneWith
11563 */
11564 cloneWith<TResult extends (number|string|boolean)>(
11565 customizer?: CloneWithCustomizer<T, TResult>
11566 ): LoDashExplicitWrapper<TResult>;
11567
11568 /**
11569 * @see _.cloneWith
11570 */
11571 cloneWith<TResult>(
11572 customizer?: CloneWithCustomizer<T, TResult[]>
11573 ): LoDashExplicitArrayWrapper<TResult>;
11574
11575 /**
11576 * @see _.cloneWith
11577 */
11578 cloneWith<TResult extends Object>(
11579 customizer?: CloneWithCustomizer<T, TResult>
11580 ): LoDashExplicitObjectWrapper<TResult>;
11581 }
11582
11583 /**
11584 * An object containing predicate functions for each property of T
11585 */
11586 type ConformsPredicateObject<T> = {
11587 [P in keyof T]: (val: T[P]) => boolean;
11588 };
11589
11590 //_.conforms
11591 interface LoDashStatic {
11592 /**
11593 * Creates a function that invokes the predicate properties of `source` with the corresponding
11594 * property values of a given object, returning true if all predicates return truthy, else false.
11595 */
11596 conforms<T>(source: ConformsPredicateObject<T>): (Target: T) => boolean;
11597 }
11598
11599 //_.conformsTo
11600 interface LoDashStatic {
11601 /**
11602 * Checks if object conforms to source by invoking the predicate properties of source with the
11603 * corresponding property values of object.
11604 *
11605 * Note: This method is equivalent to _.conforms when source is partially applied.
11606 */
11607 conformsTo<T>(object: T, source: ConformsPredicateObject<T>): boolean;
11608 }
11609
11610 //_.eq
11611 interface LoDashStatic {
11612 /**
11613 * Performs a [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
11614 * comparison between two values to determine if they are equivalent.
11615 *
11616 * @static
11617 * @memberOf _
11618 * @category Lang
11619 * @param {*} value The value to compare.
11620 * @param {*} other The other value to compare.
11621 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
11622 * @example
11623 *
11624 * var object = { 'user': 'fred' };
11625 * var other = { 'user': 'fred' };
11626 *
11627 * _.eq(object, object);
11628 * // => true
11629 *
11630 * _.eq(object, other);
11631 * // => false
11632 *
11633 * _.eq('a', 'a');
11634 * // => true
11635 *
11636 * _.eq('a', Object('a'));
11637 * // => false
11638 *
11639 * _.eq(NaN, NaN);
11640 * // => true
11641 */
11642 eq(
11643 value: any,
11644 other: any
11645 ): boolean;
11646 }
11647
11648 interface LoDashImplicitWrapperBase<T, TWrapper> {
11649 /**
11650 * @see _.isEqual
11651 */
11652 eq(
11653 other: any
11654 ): boolean;
11655 }
11656
11657 interface LoDashExplicitWrapperBase<T, TWrapper> {
11658 /**
11659 * @see _.isEqual
11660 */
11661 eq(
11662 other: any
11663 ): LoDashExplicitWrapper<boolean>;
11664 }
11665
11666 //_.gt
11667 interface LoDashStatic {
11668 /**
11669 * Checks if value is greater than other.
11670 *
11671 * @param value The value to compare.
11672 * @param other The other value to compare.
11673 * @return Returns true if value is greater than other, else false.
11674 */
11675 gt(
11676 value: any,
11677 other: any
11678 ): boolean;
11679 }
11680
11681 interface LoDashImplicitWrapperBase<T, TWrapper> {
11682 /**
11683 * @see _.gt
11684 */
11685 gt(other: any): boolean;
11686 }
11687
11688 interface LoDashExplicitWrapperBase<T, TWrapper> {
11689 /**
11690 * @see _.gt
11691 */
11692 gt(other: any): LoDashExplicitWrapper<boolean>;
11693 }
11694
11695 //_.gte
11696 interface LoDashStatic {
11697 /**
11698 * Checks if value is greater than or equal to other.
11699 *
11700 * @param value The value to compare.
11701 * @param other The other value to compare.
11702 * @return Returns true if value is greater than or equal to other, else false.
11703 */
11704 gte(
11705 value: any,
11706 other: any
11707 ): boolean;
11708 }
11709
11710 interface LoDashImplicitWrapperBase<T, TWrapper> {
11711 /**
11712 * @see _.gte
11713 */
11714 gte(other: any): boolean;
11715 }
11716
11717 interface LoDashExplicitWrapperBase<T, TWrapper> {
11718 /**
11719 * @see _.gte
11720 */
11721 gte(other: any): LoDashExplicitWrapper<boolean>;
11722 }
11723
11724 //_.isArguments
11725 interface LoDashStatic {
11726 /**
11727 * Checks if value is classified as an arguments object.
11728 *
11729 * @param value The value to check.
11730 * @return Returns true if value is correctly classified, else false.
11731 */
11732 isArguments(value?: any): value is IArguments;
11733 }
11734
11735 interface LoDashImplicitWrapperBase<T, TWrapper> {
11736 /**
11737 * @see _.isArguments
11738 */
11739 isArguments(): boolean;
11740 }
11741
11742 interface LoDashExplicitWrapperBase<T, TWrapper> {
11743 /**
11744 * @see _.isArguments
11745 */
11746 isArguments(): LoDashExplicitWrapper<boolean>;
11747 }
11748
11749 //_.isArray
11750 interface LoDashStatic {
11751 /**
11752 * Checks if value is classified as an Array object.
11753 * @param value The value to check.
11754 *
11755 * @return Returns true if value is correctly classified, else false.
11756 */
11757 isArray<T>(value?: any): value is T[];
11758 }
11759
11760 interface LoDashImplicitWrapperBase<T, TWrapper> {
11761 /**
11762 * @see _.isArray
11763 */
11764 isArray(): boolean;
11765 }
11766
11767 interface LoDashExplicitWrapperBase<T, TWrapper> {
11768 /**
11769 * @see _.isArray
11770 */
11771 isArray(): LoDashExplicitWrapper<boolean>;
11772 }
11773
11774 //_.isArrayBuffer
11775 interface LoDashStatic {
11776 /**
11777 * Checks if value is classified as an ArrayBuffer object.
11778 *
11779 * @param value The value to check.
11780 * @return Returns true if value is correctly classified, else false.
11781 */
11782 isArrayBuffer(value?: any): value is ArrayBuffer;
11783 }
11784
11785 interface LoDashImplicitWrapperBase<T, TWrapper> {
11786 /**
11787 * @see _.isArrayBuffer
11788 */
11789 isArrayBuffer(): boolean;
11790 }
11791
11792 interface LoDashExplicitWrapperBase<T, TWrapper> {
11793 /**
11794 * @see _.isArrayBuffer
11795 */
11796 isArrayBuffer(): LoDashExplicitWrapper<boolean>;
11797 }
11798
11799 //_.isArrayLike
11800 interface LoDashStatic {
11801 /**
11802 * Checks if `value` is array-like. A value is considered array-like if it's
11803 * not a function and has a `value.length` that's an integer greater than or
11804 * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
11805 *
11806 * @static
11807 * @memberOf _
11808 * @type Function
11809 * @category Lang
11810 * @param {*} value The value to check.
11811 * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
11812 * @example
11813 *
11814 * _.isArrayLike([1, 2, 3]);
11815 * // => true
11816 *
11817 * _.isArrayLike(document.body.children);
11818 * // => true
11819 *
11820 * _.isArrayLike('abc');
11821 * // => true
11822 *
11823 * _.isArrayLike(_.noop);
11824 * // => false
11825 */
11826 isArrayLike<T>(value?: any): value is T[];
11827 }
11828
11829 interface LoDashImplicitWrapperBase<T, TWrapper> {
11830 /**
11831 * @see _.isArrayLike
11832 */
11833 isArrayLike(): boolean;
11834 }
11835
11836 interface LoDashExplicitWrapperBase<T, TWrapper> {
11837 /**
11838 * @see _.isArrayLike
11839 */
11840 isArrayLike(): LoDashExplicitWrapper<boolean>;
11841 }
11842
11843 //_.isArrayLikeObject
11844 interface LoDashStatic {
11845 /**
11846 * This method is like `_.isArrayLike` except that it also checks if `value`
11847 * is an object.
11848 *
11849 * @static
11850 * @memberOf _
11851 * @type Function
11852 * @category Lang
11853 * @param {*} value The value to check.
11854 * @returns {boolean} Returns `true` if `value` is an array-like object, else `false`.
11855 * @example
11856 *
11857 * _.isArrayLikeObject([1, 2, 3]);
11858 * // => true
11859 *
11860 * _.isArrayLikeObject(document.body.children);
11861 * // => true
11862 *
11863 * _.isArrayLikeObject('abc');
11864 * // => false
11865 *
11866 * _.isArrayLikeObject(_.noop);
11867 * // => false
11868 */
11869 isArrayLikeObject<T>(value?: any): value is T[];
11870 }
11871
11872 interface LoDashImplicitWrapperBase<T, TWrapper> {
11873 /**
11874 * @see _.isArrayLikeObject
11875 */
11876 isArrayLikeObject(): boolean;
11877 }
11878
11879 interface LoDashExplicitWrapperBase<T, TWrapper> {
11880 /**
11881 * @see _.isArrayLikeObject
11882 */
11883 isArrayLikeObject(): LoDashExplicitWrapper<boolean>;
11884 }
11885
11886 //_.isBoolean
11887 interface LoDashStatic {
11888 /**
11889 * Checks if value is classified as a boolean primitive or object.
11890 *
11891 * @param value The value to check.
11892 * @return Returns true if value is correctly classified, else false.
11893 */
11894 isBoolean(value?: any): value is boolean;
11895 }
11896
11897 interface LoDashImplicitWrapperBase<T, TWrapper> {
11898 /**
11899 * @see _.isBoolean
11900 */
11901 isBoolean(): boolean;
11902 }
11903
11904 interface LoDashExplicitWrapperBase<T, TWrapper> {
11905 /**
11906 * @see _.isBoolean
11907 */
11908 isBoolean(): LoDashExplicitWrapper<boolean>;
11909 }
11910
11911 //_.isBuffer
11912 interface LoDashStatic {
11913 /**
11914 * Checks if value is a buffer.
11915 *
11916 * @param value The value to check.
11917 * @return Returns true if value is a buffer, else false.
11918 */
11919 isBuffer(value?: any): boolean;
11920 }
11921
11922 interface LoDashImplicitWrapperBase<T, TWrapper> {
11923 /**
11924 * @see _.isBuffer
11925 */
11926 isBuffer(): boolean;
11927 }
11928
11929 interface LoDashExplicitWrapperBase<T, TWrapper> {
11930 /**
11931 * @see _.isBuffer
11932 */
11933 isBuffer(): LoDashExplicitWrapper<boolean>;
11934 }
11935
11936 //_.isDate
11937 interface LoDashStatic {
11938 /**
11939 * Checks if value is classified as a Date object.
11940 * @param value The value to check.
11941 *
11942 * @return Returns true if value is correctly classified, else false.
11943 */
11944 isDate(value?: any): value is Date;
11945 }
11946
11947 interface LoDashImplicitWrapperBase<T, TWrapper> {
11948 /**
11949 * @see _.isDate
11950 */
11951 isDate(): boolean;
11952 }
11953
11954 interface LoDashExplicitWrapperBase<T, TWrapper> {
11955 /**
11956 * @see _.isDate
11957 */
11958 isDate(): LoDashExplicitWrapper<boolean>;
11959 }
11960
11961 //_.isElement
11962 interface LoDashStatic {
11963 /**
11964 * Checks if value is a DOM element.
11965 *
11966 * @param value The value to check.
11967 * @return Returns true if value is a DOM element, else false.
11968 */
11969 isElement(value?: any): boolean;
11970 }
11971
11972 interface LoDashImplicitWrapperBase<T, TWrapper> {
11973 /**
11974 * @see _.isElement
11975 */
11976 isElement(): boolean;
11977 }
11978
11979 interface LoDashExplicitWrapperBase<T, TWrapper> {
11980 /**
11981 * @see _.isElement
11982 */
11983 isElement(): LoDashExplicitWrapper<boolean>;
11984 }
11985
11986 //_.isEmpty
11987 interface LoDashStatic {
11988 /**
11989 * Checks if value is empty. A value is considered empty unless it’s an arguments object, array, string, or
11990 * jQuery-like collection with a length greater than 0 or an object with own enumerable properties.
11991 *
11992 * @param value The value to inspect.
11993 * @return Returns true if value is empty, else false.
11994 */
11995 isEmpty(value?: any): boolean;
11996 }
11997
11998 interface LoDashImplicitWrapperBase<T, TWrapper> {
11999 /**
12000 * @see _.isEmpty
12001 */
12002 isEmpty(): boolean;
12003 }
12004
12005 interface LoDashExplicitWrapperBase<T, TWrapper> {
12006 /**
12007 * @see _.isEmpty
12008 */
12009 isEmpty(): LoDashExplicitWrapper<boolean>;
12010 }
12011
12012 //_.isEqual
12013 interface LoDashStatic {
12014 /**
12015 * Performs a deep comparison between two values to determine if they are
12016 * equivalent.
12017 *
12018 * **Note:** This method supports comparing arrays, array buffers, booleans,
12019 * date objects, error objects, maps, numbers, `Object` objects, regexes,
12020 * sets, strings, symbols, and typed arrays. `Object` objects are compared
12021 * by their own, not inherited, enumerable properties. Functions and DOM
12022 * nodes are **not** supported.
12023 *
12024 * @static
12025 * @memberOf _
12026 * @category Lang
12027 * @param {*} value The value to compare.
12028 * @param {*} other The other value to compare.
12029 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
12030 * @example
12031 *
12032 * var object = { 'user': 'fred' };
12033 * var other = { 'user': 'fred' };
12034 *
12035 * _.isEqual(object, other);
12036 * // => true
12037 *
12038 * object === other;
12039 * // => false
12040 */
12041 isEqual(
12042 value: any,
12043 other: any
12044 ): boolean;
12045 }
12046
12047 interface LoDashImplicitWrapperBase<T, TWrapper> {
12048 /**
12049 * @see _.isEqual
12050 */
12051 isEqual(
12052 other: any
12053 ): boolean;
12054 }
12055
12056 interface LoDashExplicitWrapperBase<T, TWrapper> {
12057 /**
12058 * @see _.isEqual
12059 */
12060 isEqual(
12061 other: any
12062 ): LoDashExplicitWrapper<boolean>;
12063 }
12064
12065 // _.isEqualWith
12066 type IsEqualCustomizer = (value: any, other: any, indexOrKey?: number|string) => boolean;
12067
12068 interface LoDashStatic {
12069 /**
12070 * This method is like `_.isEqual` except that it accepts `customizer` which is
12071 * invoked to compare values. If `customizer` returns `undefined` comparisons are
12072 * handled by the method instead. The `customizer` is invoked with up to seven arguments:
12073 * (objValue, othValue [, index|key, object, other, stack]).
12074 *
12075 * @static
12076 * @memberOf _
12077 * @category Lang
12078 * @param {*} value The value to compare.
12079 * @param {*} other The other value to compare.
12080 * @param {Function} [customizer] The function to customize comparisons.
12081 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
12082 * @example
12083 *
12084 * function isGreeting(value) {
12085 * return /^h(?:i|ello)$/.test(value);
12086 * }
12087 *
12088 * function customizer(objValue, othValue) {
12089 * if (isGreeting(objValue) && isGreeting(othValue)) {
12090 * return true;
12091 * }
12092 * }
12093 *
12094 * var array = ['hello', 'goodbye'];
12095 * var other = ['hi', 'goodbye'];
12096 *
12097 * _.isEqualWith(array, other, customizer);
12098 * // => true
12099 */
12100 isEqualWith(
12101 value: any,
12102 other: any,
12103 customizer: IsEqualCustomizer
12104 ): boolean;
12105 }
12106
12107 interface LoDashImplicitWrapperBase<T, TWrapper> {
12108 /**
12109 * @see _.isEqualWith
12110 */
12111 isEqualWith(
12112 other: any,
12113 customizer: IsEqualCustomizer
12114 ): boolean;
12115 }
12116
12117 interface LoDashExplicitWrapperBase<T, TWrapper> {
12118 /**
12119 * @see _.isEqualWith
12120 */
12121 isEqualWith(
12122 other: any,
12123 customizer: IsEqualCustomizer
12124 ): LoDashExplicitWrapper<boolean>;
12125 }
12126
12127 //_.isError
12128 interface LoDashStatic {
12129 /**
12130 * Checks if value is an Error, EvalError, RangeError, ReferenceError, SyntaxError, TypeError, or URIError
12131 * object.
12132 *
12133 * @param value The value to check.
12134 * @return Returns true if value is an error object, else false.
12135 */
12136 isError(value: any): value is Error;
12137 }
12138
12139 interface LoDashImplicitWrapperBase<T, TWrapper> {
12140 /**
12141 * @see _.isError
12142 */
12143 isError(): boolean;
12144 }
12145
12146 interface LoDashExplicitWrapperBase<T, TWrapper> {
12147 /**
12148 * @see _.isError
12149 */
12150 isError(): LoDashExplicitWrapper<boolean>;
12151 }
12152
12153 //_.isFinite
12154 interface LoDashStatic {
12155 /**
12156 * Checks if value is a finite primitive number.
12157 *
12158 * Note: This method is based on Number.isFinite.
12159 *
12160 * @param value The value to check.
12161 * @return Returns true if value is a finite number, else false.
12162 */
12163 isFinite(value?: any): boolean;
12164 }
12165
12166 interface LoDashImplicitWrapperBase<T, TWrapper> {
12167 /**
12168 * @see _.isFinite
12169 */
12170 isFinite(): boolean;
12171 }
12172
12173 interface LoDashExplicitWrapperBase<T, TWrapper> {
12174 /**
12175 * @see _.isFinite
12176 */
12177 isFinite(): LoDashExplicitWrapper<boolean>;
12178 }
12179
12180 //_.isFunction
12181 interface LoDashStatic {
12182 /**
12183 * Checks if value is classified as a Function object.
12184 *
12185 * @param value The value to check.
12186 * @return Returns true if value is correctly classified, else false.
12187 */
12188 isFunction(value?: any): value is Function;
12189 }
12190
12191 interface LoDashImplicitWrapperBase<T, TWrapper> {
12192 /**
12193 * @see _.isFunction
12194 */
12195 isFunction(): boolean;
12196 }
12197
12198 interface LoDashExplicitWrapperBase<T, TWrapper> {
12199 /**
12200 * @see _.isFunction
12201 */
12202 isFunction(): LoDashExplicitWrapper<boolean>;
12203 }
12204
12205 //_.isInteger
12206 interface LoDashStatic {
12207 /**
12208 * Checks if `value` is an integer.
12209 *
12210 * **Note:** This method is based on [`Number.isInteger`](https://mdn.io/Number/isInteger).
12211 *
12212 * @static
12213 * @memberOf _
12214 * @category Lang
12215 * @param {*} value The value to check.
12216 * @returns {boolean} Returns `true` if `value` is an integer, else `false`.
12217 * @example
12218 *
12219 * _.isInteger(3);
12220 * // => true
12221 *
12222 * _.isInteger(Number.MIN_VALUE);
12223 * // => false
12224 *
12225 * _.isInteger(Infinity);
12226 * // => false
12227 *
12228 * _.isInteger('3');
12229 * // => false
12230 */
12231 isInteger(value?: any): boolean;
12232 }
12233
12234 interface LoDashImplicitWrapperBase<T, TWrapper> {
12235 /**
12236 * @see _.isInteger
12237 */
12238 isInteger(): boolean;
12239 }
12240
12241 interface LoDashExplicitWrapperBase<T, TWrapper> {
12242 /**
12243 * @see _.isInteger
12244 */
12245 isInteger(): LoDashExplicitWrapper<boolean>;
12246 }
12247
12248 //_.isLength
12249 interface LoDashStatic {
12250 /**
12251 * Checks if `value` is a valid array-like length.
12252 *
12253 * **Note:** This function is loosely based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).
12254 *
12255 * @static
12256 * @memberOf _
12257 * @category Lang
12258 * @param {*} value The value to check.
12259 * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
12260 * @example
12261 *
12262 * _.isLength(3);
12263 * // => true
12264 *
12265 * _.isLength(Number.MIN_VALUE);
12266 * // => false
12267 *
12268 * _.isLength(Infinity);
12269 * // => false
12270 *
12271 * _.isLength('3');
12272 * // => false
12273 */
12274 isLength(value?: any): boolean;
12275 }
12276
12277 interface LoDashImplicitWrapperBase<T, TWrapper> {
12278 /**
12279 * @see _.isLength
12280 */
12281 isLength(): boolean;
12282 }
12283
12284 interface LoDashExplicitWrapperBase<T, TWrapper> {
12285 /**
12286 * @see _.isLength
12287 */
12288 isLength(): LoDashExplicitWrapper<boolean>;
12289 }
12290
12291 //_.isMap
12292 interface LoDashStatic {
12293 /**
12294 * Checks if value is classified as a Map object.
12295 *
12296 * @param value The value to check.
12297 * @returns Returns true if value is correctly classified, else false.
12298 */
12299 isMap<K, V>(value?: any): value is Map<K, V>;
12300 }
12301
12302 interface LoDashImplicitWrapperBase<T, TWrapper> {
12303 /**
12304 * @see _.isMap
12305 */
12306 isMap(): boolean;
12307 }
12308
12309 interface LoDashExplicitWrapperBase<T, TWrapper> {
12310 /**
12311 * @see _.isMap
12312 */
12313 isMap(): LoDashExplicitWrapper<boolean>;
12314 }
12315
12316 //_.isMatch
12317 type isMatchCustomizer = (value: any, other: any, indexOrKey?: number|string) => boolean;
12318
12319 interface LoDashStatic {
12320 /**
12321 * Performs a deep comparison between `object` and `source` to determine if
12322 * `object` contains equivalent property values.
12323 *
12324 * **Note:** This method supports comparing the same values as `_.isEqual`.
12325 *
12326 * @static
12327 * @memberOf _
12328 * @category Lang
12329 * @param {Object} object The object to inspect.
12330 * @param {Object} source The object of property values to match.
12331 * @returns {boolean} Returns `true` if `object` is a match, else `false`.
12332 * @example
12333 *
12334 * var object = { 'user': 'fred', 'age': 40 };
12335 *
12336 * _.isMatch(object, { 'age': 40 });
12337 * // => true
12338 *
12339 * _.isMatch(object, { 'age': 36 });
12340 * // => false
12341 */
12342 isMatch(object: Object, source: Object): boolean;
12343 }
12344
12345 interface LoDashImplicitObjectWrapper<T> {
12346 /**
12347 * @see _.isMatch
12348 */
12349 isMatch(source: Object): boolean;
12350 }
12351
12352 //_.isMatchWith
12353 type isMatchWithCustomizer = (value: any, other: any, indexOrKey?: number|string) => boolean;
12354
12355 interface LoDashStatic {
12356 /**
12357 * This method is like `_.isMatch` except that it accepts `customizer` which
12358 * is invoked to compare values. If `customizer` returns `undefined` comparisons
12359 * are handled by the method instead. The `customizer` is invoked with three
12360 * arguments: (objValue, srcValue, index|key, object, source).
12361 *
12362 * @static
12363 * @memberOf _
12364 * @category Lang
12365 * @param {Object} object The object to inspect.
12366 * @param {Object} source The object of property values to match.
12367 * @param {Function} [customizer] The function to customize comparisons.
12368 * @returns {boolean} Returns `true` if `object` is a match, else `false`.
12369 * @example
12370 *
12371 * function isGreeting(value) {
12372 * return /^h(?:i|ello)$/.test(value);
12373 * }
12374 *
12375 * function customizer(objValue, srcValue) {
12376 * if (isGreeting(objValue) && isGreeting(srcValue)) {
12377 * return true;
12378 * }
12379 * }
12380 *
12381 * var object = { 'greeting': 'hello' };
12382 * var source = { 'greeting': 'hi' };
12383 *
12384 * _.isMatchWith(object, source, customizer);
12385 * // => true
12386 */
12387 isMatchWith(object: Object, source: Object, customizer: isMatchWithCustomizer): boolean;
12388 }
12389
12390 interface LoDashImplicitObjectWrapper<T> {
12391 /**
12392 * @see _.isMatchWith
12393 */
12394 isMatchWith(source: Object, customizer: isMatchWithCustomizer): boolean;
12395 }
12396
12397 //_.isNaN
12398 interface LoDashStatic {
12399 /**
12400 * Checks if value is NaN.
12401 *
12402 * Note: This method is not the same as isNaN which returns true for undefined and other non-numeric values.
12403 *
12404 * @param value The value to check.
12405 * @return Returns true if value is NaN, else false.
12406 */
12407 isNaN(value?: any): boolean;
12408 }
12409
12410 interface LoDashImplicitWrapperBase<T, TWrapper> {
12411 /**
12412 * @see _.isNaN
12413 */
12414 isNaN(): boolean;
12415 }
12416
12417 interface LoDashExplicitWrapperBase<T, TWrapper> {
12418 /**
12419 * @see _.isNaN
12420 */
12421 isNaN(): LoDashExplicitWrapper<boolean>;
12422 }
12423
12424 //_.isNative
12425 interface LoDashStatic {
12426 /**
12427 * Checks if value is a native function.
12428 * @param value The value to check.
12429 *
12430 * @retrun Returns true if value is a native function, else false.
12431 */
12432 isNative(value: any): value is Function;
12433 }
12434
12435 interface LoDashImplicitWrapperBase<T, TWrapper> {
12436 /**
12437 * see _.isNative
12438 */
12439 isNative(): boolean;
12440 }
12441
12442 interface LoDashExplicitWrapperBase<T, TWrapper> {
12443 /**
12444 * see _.isNative
12445 */
12446 isNative(): LoDashExplicitWrapper<boolean>;
12447 }
12448
12449 //_.isNil
12450 interface LoDashStatic {
12451 /**
12452 * Checks if `value` is `null` or `undefined`.
12453 *
12454 * @static
12455 * @memberOf _
12456 * @category Lang
12457 * @param {*} value The value to check.
12458 * @returns {boolean} Returns `true` if `value` is nullish, else `false`.
12459 * @example
12460 *
12461 * _.isNil(null);
12462 * // => true
12463 *
12464 * _.isNil(void 0);
12465 * // => true
12466 *
12467 * _.isNil(NaN);
12468 * // => false
12469 */
12470 isNil(value: any): value is null | undefined;
12471 }
12472
12473 interface LoDashImplicitWrapperBase<T, TWrapper> {
12474 /**
12475 * see _.isNil
12476 */
12477 isNil(): boolean;
12478 }
12479
12480 interface LoDashExplicitWrapperBase<T, TWrapper> {
12481 /**
12482 * see _.isNil
12483 */
12484 isNil(): LoDashExplicitWrapper<boolean>;
12485 }
12486
12487 //_.isNull
12488 interface LoDashStatic {
12489 /**
12490 * Checks if value is null.
12491 *
12492 * @param value The value to check.
12493 * @return Returns true if value is null, else false.
12494 */
12495 isNull(value: any): value is null;
12496 }
12497
12498 interface LoDashImplicitWrapperBase<T, TWrapper> {
12499 /**
12500 * see _.isNull
12501 */
12502 isNull(): boolean;
12503 }
12504
12505 interface LoDashExplicitWrapperBase<T, TWrapper> {
12506 /**
12507 * see _.isNull
12508 */
12509 isNull(): LoDashExplicitWrapper<boolean>;
12510 }
12511
12512 //_.isNumber
12513 interface LoDashStatic {
12514 /**
12515 * Checks if value is classified as a Number primitive or object.
12516 *
12517 * Note: To exclude Infinity, -Infinity, and NaN, which are classified as numbers, use the _.isFinite method.
12518 *
12519 * @param value The value to check.
12520 * @return Returns true if value is correctly classified, else false.
12521 */
12522 isNumber(value?: any): value is number;
12523 }
12524
12525 interface LoDashImplicitWrapperBase<T, TWrapper> {
12526 /**
12527 * see _.isNumber
12528 */
12529 isNumber(): boolean;
12530 }
12531
12532 interface LoDashExplicitWrapperBase<T, TWrapper> {
12533 /**
12534 * see _.isNumber
12535 */
12536 isNumber(): LoDashExplicitWrapper<boolean>;
12537 }
12538
12539 //_.isObject
12540 interface LoDashStatic {
12541 /**
12542 * Checks if value is the language type of Object. (e.g. arrays, functions, objects, regexes, new Number(0),
12543 * and new String(''))
12544 *
12545 * @param value The value to check.
12546 * @return Returns true if value is an object, else false.
12547 */
12548 isObject(value?: any): boolean;
12549 }
12550
12551 interface LoDashImplicitWrapperBase<T, TWrapper> {
12552 /**
12553 * see _.isObject
12554 */
12555 isObject(): boolean;
12556 }
12557
12558 interface LoDashExplicitWrapperBase<T, TWrapper> {
12559 /**
12560 * see _.isObject
12561 */
12562 isObject(): LoDashExplicitWrapper<boolean>;
12563 }
12564
12565 //_.isObjectLike
12566 interface LoDashStatic {
12567 /**
12568 * Checks if `value` is object-like. A value is object-like if it's not `null`
12569 * and has a `typeof` result of "object".
12570 *
12571 * @static
12572 * @memberOf _
12573 * @category Lang
12574 * @param {*} value The value to check.
12575 * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
12576 * @example
12577 *
12578 * _.isObjectLike({});
12579 * // => true
12580 *
12581 * _.isObjectLike([1, 2, 3]);
12582 * // => true
12583 *
12584 * _.isObjectLike(_.noop);
12585 * // => false
12586 *
12587 * _.isObjectLike(null);
12588 * // => false
12589 */
12590 isObjectLike(value?: any): boolean;
12591 }
12592
12593 interface LoDashImplicitWrapperBase<T, TWrapper> {
12594 /**
12595 * see _.isObjectLike
12596 */
12597 isObjectLike(): boolean;
12598 }
12599
12600 interface LoDashExplicitWrapperBase<T, TWrapper> {
12601 /**
12602 * see _.isObjectLike
12603 */
12604 isObjectLike(): LoDashExplicitWrapper<boolean>;
12605 }
12606
12607 //_.isPlainObject
12608 interface LoDashStatic {
12609 /**
12610 * Checks if value is a plain object, that is, an object created by the Object constructor or one with a
12611 * [[Prototype]] of null.
12612 *
12613 * Note: This method assumes objects created by the Object constructor have no inherited enumerable properties.
12614 *
12615 * @param value The value to check.
12616 * @return Returns true if value is a plain object, else false.
12617 */
12618 isPlainObject(value?: any): boolean;
12619 }
12620
12621 interface LoDashImplicitWrapperBase<T, TWrapper> {
12622 /**
12623 * see _.isPlainObject
12624 */
12625 isPlainObject(): boolean;
12626 }
12627
12628 interface LoDashExplicitWrapperBase<T, TWrapper> {
12629 /**
12630 * see _.isPlainObject
12631 */
12632 isPlainObject(): LoDashExplicitWrapper<boolean>;
12633 }
12634
12635 //_.isRegExp
12636 interface LoDashStatic {
12637 /**
12638 * Checks if value is classified as a RegExp object.
12639 * @param value The value to check.
12640 *
12641 * @return Returns true if value is correctly classified, else false.
12642 */
12643 isRegExp(value?: any): value is RegExp;
12644 }
12645
12646 interface LoDashImplicitWrapperBase<T, TWrapper> {
12647 /**
12648 * see _.isRegExp
12649 */
12650 isRegExp(): boolean;
12651 }
12652
12653 interface LoDashExplicitWrapperBase<T, TWrapper> {
12654 /**
12655 * see _.isRegExp
12656 */
12657 isRegExp(): LoDashExplicitWrapper<boolean>;
12658 }
12659
12660 //_.isSafeInteger
12661 interface LoDashStatic {
12662 /**
12663 * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754
12664 * double precision number which isn't the result of a rounded unsafe integer.
12665 *
12666 * **Note:** This method is based on [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).
12667 *
12668 * @static
12669 * @memberOf _
12670 * @category Lang
12671 * @param {*} value The value to check.
12672 * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.
12673 * @example
12674 *
12675 * _.isSafeInteger(3);
12676 * // => true
12677 *
12678 * _.isSafeInteger(Number.MIN_VALUE);
12679 * // => false
12680 *
12681 * _.isSafeInteger(Infinity);
12682 * // => false
12683 *
12684 * _.isSafeInteger('3');
12685 * // => false
12686 */
12687 isSafeInteger(value: any): boolean;
12688 }
12689
12690 interface LoDashImplicitWrapperBase<T, TWrapper> {
12691 /**
12692 * see _.isSafeInteger
12693 */
12694 isSafeInteger(): boolean;
12695 }
12696
12697 interface LoDashExplicitWrapperBase<T, TWrapper> {
12698 /**
12699 * see _.isSafeInteger
12700 */
12701 isSafeInteger(): LoDashExplicitWrapper<boolean>;
12702 }
12703
12704 //_.isSet
12705 interface LoDashStatic {
12706 /**
12707 * Checks if value is classified as a Set object.
12708 *
12709 * @param value The value to check.
12710 * @returns Returns true if value is correctly classified, else false.
12711 */
12712 isSet<T>(value?: any): value is Set<T>;
12713 }
12714
12715 interface LoDashImplicitWrapperBase<T, TWrapper> {
12716 /**
12717 * @see _.isSet
12718 */
12719 isSet(): boolean;
12720 }
12721
12722 interface LoDashExplicitWrapperBase<T, TWrapper> {
12723 /**
12724 * @see _.isSet
12725 */
12726 isSet(): LoDashExplicitWrapper<boolean>;
12727 }
12728
12729 //_.isString
12730 interface LoDashStatic {
12731 /**
12732 * Checks if value is classified as a String primitive or object.
12733 *
12734 * @param value The value to check.
12735 * @return Returns true if value is correctly classified, else false.
12736 */
12737 isString(value?: any): value is string;
12738 }
12739
12740 interface LoDashImplicitWrapperBase<T, TWrapper> {
12741 /**
12742 * see _.isString
12743 */
12744 isString(): boolean;
12745 }
12746
12747 interface LoDashExplicitWrapperBase<T, TWrapper> {
12748 /**
12749 * see _.isString
12750 */
12751 isString(): LoDashExplicitWrapper<boolean>;
12752 }
12753
12754 //_.isSymbol
12755 interface LoDashStatic {
12756 /**
12757 * Checks if `value` is classified as a `Symbol` primitive or object.
12758 *
12759 * @static
12760 * @memberOf _
12761 * @category Lang
12762 * @param {*} value The value to check.
12763 * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
12764 * @example
12765 *
12766 * _.isSymbol(Symbol.iterator);
12767 * // => true
12768 *
12769 * _.isSymbol('abc');
12770 * // => false
12771 */
12772 isSymbol(value: any): boolean;
12773 }
12774
12775 interface LoDashImplicitWrapperBase<T, TWrapper> {
12776 /**
12777 * see _.isSymbol
12778 */
12779 isSymbol(): boolean;
12780 }
12781
12782 interface LoDashExplicitWrapperBase<T, TWrapper> {
12783 /**
12784 * see _.isSymbol
12785 */
12786 isSymbol(): LoDashExplicitWrapper<boolean>;
12787 }
12788
12789 //_.isTypedArray
12790 interface LoDashStatic {
12791 /**
12792 * Checks if value is classified as a typed array.
12793 *
12794 * @param value The value to check.
12795 * @return Returns true if value is correctly classified, else false.
12796 */
12797 isTypedArray(value: any): boolean;
12798 }
12799
12800 interface LoDashImplicitWrapperBase<T, TWrapper> {
12801 /**
12802 * see _.isTypedArray
12803 */
12804 isTypedArray(): boolean;
12805 }
12806
12807 interface LoDashExplicitWrapperBase<T, TWrapper> {
12808 /**
12809 * see _.isTypedArray
12810 */
12811 isTypedArray(): LoDashExplicitWrapper<boolean>;
12812 }
12813
12814 //_.isUndefined
12815 interface LoDashStatic {
12816 /**
12817 * Checks if value is undefined.
12818 *
12819 * @param value The value to check.
12820 * @return Returns true if value is undefined, else false.
12821 */
12822 isUndefined(value: any): value is undefined;
12823 }
12824
12825 interface LoDashImplicitWrapperBase<T, TWrapper> {
12826 /**
12827 * see _.isUndefined
12828 */
12829 isUndefined(): boolean;
12830 }
12831
12832 interface LoDashExplicitWrapperBase<T, TWrapper> {
12833 /**
12834 * see _.isUndefined
12835 */
12836 isUndefined(): LoDashExplicitWrapper<boolean>;
12837 }
12838
12839 //_.isWeakMap
12840 interface LoDashStatic {
12841 /**
12842 * Checks if value is classified as a WeakMap object.
12843 *
12844 * @param value The value to check.
12845 * @returns Returns true if value is correctly classified, else false.
12846 */
12847 isWeakMap<K extends object, V>(value?: any): value is WeakMap<K, V>;
12848 }
12849
12850 interface LoDashImplicitWrapperBase<T, TWrapper> {
12851 /**
12852 * @see _.isSet
12853 */
12854 isWeakMap(): boolean;
12855 }
12856
12857 interface LoDashExplicitWrapperBase<T, TWrapper> {
12858 /**
12859 * @see _.isSet
12860 */
12861 isWeakMap(): LoDashExplicitWrapper<boolean>;
12862 }
12863
12864 //_.isWeakSet
12865 interface LoDashStatic {
12866 /**
12867 * Checks if value is classified as a WeakSet object.
12868 *
12869 * @param value The value to check.
12870 * @returns Returns true if value is correctly classified, else false.
12871 */
12872 isWeakSet<T>(value?: any): value is WeakSet<T>;
12873 }
12874
12875 interface LoDashImplicitWrapperBase<T, TWrapper> {
12876 /**
12877 * @see _.isWeakSet
12878 */
12879 isWeakSet(): boolean;
12880 }
12881
12882 interface LoDashExplicitWrapperBase<T, TWrapper> {
12883 /**
12884 * @see _.isWeakSet
12885 */
12886 isWeakSet(): LoDashExplicitWrapper<boolean>;
12887 }
12888
12889 //_.lt
12890 interface LoDashStatic {
12891 /**
12892 * Checks if value is less than other.
12893 *
12894 * @param value The value to compare.
12895 * @param other The other value to compare.
12896 * @return Returns true if value is less than other, else false.
12897 */
12898 lt(
12899 value: any,
12900 other: any
12901 ): boolean;
12902 }
12903
12904 interface LoDashImplicitWrapperBase<T, TWrapper> {
12905 /**
12906 * @see _.lt
12907 */
12908 lt(other: any): boolean;
12909 }
12910
12911 interface LoDashExplicitWrapperBase<T, TWrapper> {
12912 /**
12913 * @see _.lt
12914 */
12915 lt(other: any): LoDashExplicitWrapper<boolean>;
12916 }
12917
12918 //_.lte
12919 interface LoDashStatic {
12920 /**
12921 * Checks if value is less than or equal to other.
12922 *
12923 * @param value The value to compare.
12924 * @param other The other value to compare.
12925 * @return Returns true if value is less than or equal to other, else false.
12926 */
12927 lte(
12928 value: any,
12929 other: any
12930 ): boolean;
12931 }
12932
12933 interface LoDashImplicitWrapperBase<T, TWrapper> {
12934 /**
12935 * @see _.lte
12936 */
12937 lte(other: any): boolean;
12938 }
12939
12940 interface LoDashExplicitWrapperBase<T, TWrapper> {
12941 /**
12942 * @see _.lte
12943 */
12944 lte(other: any): LoDashExplicitWrapper<boolean>;
12945 }
12946
12947 //_.toArray
12948 interface LoDashStatic {
12949 /**
12950 * Converts value to an array.
12951 *
12952 * @param value The value to convert.
12953 * @return Returns the converted array.
12954 */
12955 toArray<T>(value: List<T>|Dictionary<T>|NumericDictionary<T>): T[];
12956
12957 /**
12958 * @see _.toArray
12959 */
12960 toArray<TValue, TResult>(value: TValue): TResult[];
12961
12962 /**
12963 * @see _.toArray
12964 */
12965 toArray<TResult>(value?: any): TResult[];
12966 }
12967
12968 interface LoDashImplicitWrapper<T> {
12969 /**
12970 * @see _.toArray
12971 */
12972 toArray<TResult>(): LoDashImplicitArrayWrapper<TResult>;
12973 }
12974
12975 interface LoDashImplicitArrayWrapper<T> {
12976 /**
12977 * @see _.toArray
12978 */
12979 toArray(): LoDashImplicitArrayWrapper<T>;
12980 }
12981
12982 interface LoDashImplicitObjectWrapper<T> {
12983 /**
12984 * @see _.toArray
12985 */
12986 toArray<TResult>(): LoDashImplicitArrayWrapper<TResult>;
12987 }
12988
12989 interface LoDashExplicitWrapper<T> {
12990 /**
12991 * @see _.toArray
12992 */
12993 toArray<TResult>(): LoDashExplicitArrayWrapper<TResult>;
12994 }
12995
12996 interface LoDashExplicitArrayWrapper<T> {
12997 /**
12998 * @see _.toArray
12999 */
13000 toArray(): LoDashExplicitArrayWrapper<T>;
13001 }
13002
13003 interface LoDashExplicitObjectWrapper<T> {
13004 /**
13005 * @see _.toArray
13006 */
13007 toArray<TResult>(): LoDashExplicitArrayWrapper<TResult>;
13008 }
13009
13010 //_.toPlainObject
13011 interface LoDashStatic {
13012 /**
13013 * Converts value to a plain object flattening inherited enumerable properties of value to own properties
13014 * of the plain object.
13015 *
13016 * @param value The value to convert.
13017 * @return Returns the converted plain object.
13018 */
13019 toPlainObject<TResult extends {}>(value?: any): TResult;
13020 }
13021
13022 interface LoDashImplicitWrapperBase<T, TWrapper> {
13023 /**
13024 * @see _.toPlainObject
13025 */
13026 toPlainObject<TResult extends {}>(): LoDashImplicitObjectWrapper<TResult>;
13027 }
13028
13029 //_.toInteger
13030 interface LoDashStatic {
13031 /**
13032 * Converts `value` to an integer.
13033 *
13034 * **Note:** This function is loosely based on [`ToInteger`](http://www.ecma-international.org/ecma-262/6.0/#sec-tointeger).
13035 *
13036 * @static
13037 * @memberOf _
13038 * @category Lang
13039 * @param {*} value The value to convert.
13040 * @returns {number} Returns the converted integer.
13041 * @example
13042 *
13043 * _.toInteger(3);
13044 * // => 3
13045 *
13046 * _.toInteger(Number.MIN_VALUE);
13047 * // => 0
13048 *
13049 * _.toInteger(Infinity);
13050 * // => 1.7976931348623157e+308
13051 *
13052 * _.toInteger('3');
13053 * // => 3
13054 */
13055 toInteger(value: any): number;
13056 }
13057
13058 interface LoDashImplicitWrapperBase<T, TWrapper> {
13059 /**
13060 * @see _.toInteger
13061 */
13062 toInteger(): LoDashImplicitWrapper<number>;
13063 }
13064
13065 interface LoDashExplicitWrapperBase<T, TWrapper> {
13066 /**
13067 * @see _.toInteger
13068 */
13069 toInteger(): LoDashExplicitWrapper<number>;
13070 }
13071
13072 //_.toLength
13073 interface LoDashStatic {
13074 /**
13075 * Converts `value` to an integer suitable for use as the length of an
13076 * array-like object.
13077 *
13078 * **Note:** This method is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).
13079 *
13080 * @static
13081 * @memberOf _
13082 * @category Lang
13083 * @param {*} value The value to convert.
13084 * @return {number} Returns the converted integer.
13085 * @example
13086 *
13087 * _.toLength(3);
13088 * // => 3
13089 *
13090 * _.toLength(Number.MIN_VALUE);
13091 * // => 0
13092 *
13093 * _.toLength(Infinity);
13094 * // => 4294967295
13095 *
13096 * _.toLength('3');
13097 * // => 3
13098 */
13099 toLength(value: any): number;
13100 }
13101
13102 interface LoDashImplicitWrapperBase<T, TWrapper> {
13103 /**
13104 * @see _.toLength
13105 */
13106 toLength(): LoDashImplicitWrapper<number>;
13107 }
13108
13109 interface LoDashExplicitWrapperBase<T, TWrapper> {
13110 /**
13111 * @see _.toLength
13112 */
13113 toLength(): LoDashExplicitWrapper<number>;
13114 }
13115
13116 //_.toNumber
13117 interface LoDashStatic {
13118 /**
13119 * Converts `value` to a number.
13120 *
13121 * @static
13122 * @memberOf _
13123 * @category Lang
13124 * @param {*} value The value to process.
13125 * @returns {number} Returns the number.
13126 * @example
13127 *
13128 * _.toNumber(3);
13129 * // => 3
13130 *
13131 * _.toNumber(Number.MIN_VALUE);
13132 * // => 5e-324
13133 *
13134 * _.toNumber(Infinity);
13135 * // => Infinity
13136 *
13137 * _.toNumber('3');
13138 * // => 3
13139 */
13140 toNumber(value: any): number;
13141 }
13142
13143 interface LoDashImplicitWrapperBase<T, TWrapper> {
13144 /**
13145 * @see _.toNumber
13146 */
13147 toNumber(): LoDashImplicitWrapper<number>;
13148 }
13149
13150 interface LoDashExplicitWrapperBase<T, TWrapper> {
13151 /**
13152 * @see _.toNumber
13153 */
13154 toNumber(): LoDashExplicitWrapper<number>;
13155 }
13156
13157 //_.toSafeInteger
13158 interface LoDashStatic {
13159 /**
13160 * Converts `value` to a safe integer. A safe integer can be compared and
13161 * represented correctly.
13162 *
13163 * @static
13164 * @memberOf _
13165 * @category Lang
13166 * @param {*} value The value to convert.
13167 * @returns {number} Returns the converted integer.
13168 * @example
13169 *
13170 * _.toSafeInteger(3);
13171 * // => 3
13172 *
13173 * _.toSafeInteger(Number.MIN_VALUE);
13174 * // => 0
13175 *
13176 * _.toSafeInteger(Infinity);
13177 * // => 9007199254740991
13178 *
13179 * _.toSafeInteger('3');
13180 * // => 3
13181 */
13182 toSafeInteger(value: any): number;
13183 }
13184
13185 interface LoDashImplicitWrapperBase<T, TWrapper> {
13186 /**
13187 * @see _.toSafeInteger
13188 */
13189 toSafeInteger(): LoDashImplicitWrapper<number>;
13190 }
13191
13192 interface LoDashExplicitWrapperBase<T, TWrapper> {
13193 /**
13194 * @see _.toSafeInteger
13195 */
13196 toSafeInteger(): LoDashExplicitWrapper<number>;
13197 }
13198
13199 //_.toString DUMMY
13200 interface LoDashStatic {
13201 /**
13202 * Converts `value` to a string if it's not one. An empty string is returned
13203 * for `null` and `undefined` values. The sign of `-0` is preserved.
13204 *
13205 * @static
13206 * @memberOf _
13207 * @category Lang
13208 * @param {*} value The value to process.
13209 * @returns {string} Returns the string.
13210 * @example
13211 *
13212 * _.toString(null);
13213 * // => ''
13214 *
13215 * _.toString(-0);
13216 * // => '-0'
13217 *
13218 * _.toString([1, 2, 3]);
13219 * // => '1,2,3'
13220 */
13221 toString(value: any): string;
13222 }
13223
13224 /********
13225 * Math *
13226 ********/
13227
13228 //_.add
13229 interface LoDashStatic {
13230 /**
13231 * Adds two numbers.
13232 *
13233 * @param augend The first number to add.
13234 * @param addend The second number to add.
13235 * @return Returns the sum.
13236 */
13237 add(
13238 augend: number,
13239 addend: number
13240 ): number;
13241 }
13242
13243 interface LoDashImplicitWrapper<T> {
13244 /**
13245 * @see _.add
13246 */
13247 add(addend: number): number;
13248 }
13249
13250 interface LoDashExplicitWrapper<T> {
13251 /**
13252 * @see _.add
13253 */
13254 add(addend: number): LoDashExplicitWrapper<number>;
13255 }
13256
13257 //_.ceil
13258 interface LoDashStatic {
13259 /**
13260 * Calculates n rounded up to precision.
13261 *
13262 * @param n The number to round up.
13263 * @param precision The precision to round up to.
13264 * @return Returns the rounded up number.
13265 */
13266 ceil(
13267 n: number,
13268 precision?: number
13269 ): number;
13270 }
13271
13272 interface LoDashImplicitWrapper<T> {
13273 /**
13274 * @see _.ceil
13275 */
13276 ceil(precision?: number): number;
13277 }
13278
13279 interface LoDashExplicitWrapper<T> {
13280 /**
13281 * @see _.ceil
13282 */
13283 ceil(precision?: number): LoDashExplicitWrapper<number>;
13284 }
13285
13286 //_.floor
13287 interface LoDashStatic {
13288 /**
13289 * Calculates n rounded down to precision.
13290 *
13291 * @param n The number to round down.
13292 * @param precision The precision to round down to.
13293 * @return Returns the rounded down number.
13294 */
13295 floor(
13296 n: number,
13297 precision?: number
13298 ): number;
13299 }
13300
13301 interface LoDashImplicitWrapper<T> {
13302 /**
13303 * @see _.floor
13304 */
13305 floor(precision?: number): number;
13306 }
13307
13308 interface LoDashExplicitWrapper<T> {
13309 /**
13310 * @see _.floor
13311 */
13312 floor(precision?: number): LoDashExplicitWrapper<number>;
13313 }
13314
13315 //_.max
13316 interface LoDashStatic {
13317 /**
13318 * Computes the maximum value of `array`. If `array` is empty or falsey
13319 * `undefined` is returned.
13320 *
13321 * @static
13322 * @memberOf _
13323 * @category Math
13324 * @param {Array} array The array to iterate over.
13325 * @returns {*} Returns the maximum value.
13326 */
13327 max<T>(
13328 collection: List<T>
13329 ): T;
13330 }
13331
13332 interface LoDashImplicitArrayWrapper<T> {
13333 /**
13334 * @see _.max
13335 */
13336 max(): T;
13337 }
13338
13339 interface LoDashImplicitObjectWrapper<T> {
13340 /**
13341 * @see _.max
13342 */
13343 max<T>(): T;
13344 }
13345
13346 //_.maxBy
13347 interface LoDashStatic {
13348 /**
13349 * This method is like `_.max` except that it accepts `iteratee` which is
13350 * invoked for each element in `array` to generate the criterion by which
13351 * the value is ranked. The iteratee is invoked with one argument: (value).
13352 *
13353 * @static
13354 * @memberOf _
13355 * @category Math
13356 * @param {Array} array The array to iterate over.
13357 * @param {Function|Object|string} [iteratee=_.identity] The iteratee invoked per element.
13358 * @returns {*} Returns the maximum value.
13359 * @example
13360 *
13361 * var objects = [{ 'n': 1 }, { 'n': 2 }];
13362 *
13363 * _.maxBy(objects, function(o) { return o.a; });
13364 * // => { 'n': 2 }
13365 *
13366 * // using the `_.property` iteratee shorthand
13367 * _.maxBy(objects, 'n');
13368 * // => { 'n': 2 }
13369 */
13370 maxBy<T>(
13371 collection: List<T>,
13372 iteratee?: ListIterator<T, any>
13373 ): T;
13374
13375 /**
13376 * @see _.maxBy
13377 */
13378 maxBy<T>(
13379 collection: Dictionary<T>,
13380 iteratee?: DictionaryIterator<T, any>
13381 ): T;
13382
13383 /**
13384 * @see _.maxBy
13385 */
13386 maxBy<T>(
13387 collection: List<T>|Dictionary<T>,
13388 iteratee?: string
13389 ): T;
13390
13391 /**
13392 * @see _.maxBy
13393 */
13394 maxBy<TObject extends {}, T>(
13395 collection: List<T>|Dictionary<T>,
13396 whereValue?: TObject
13397 ): T;
13398 }
13399
13400 interface LoDashImplicitArrayWrapper<T> {
13401 /**
13402 * @see _.maxBy
13403 */
13404 maxBy(
13405 iteratee?: ListIterator<T, any>
13406 ): T;
13407
13408 /**
13409 * @see _.maxBy
13410 */
13411 maxBy(
13412 iteratee?: string
13413 ): T;
13414
13415 /**
13416 * @see _.maxBy
13417 */
13418 maxBy<TObject extends {}>(
13419 whereValue?: TObject
13420 ): T;
13421 }
13422
13423 interface LoDashImplicitObjectWrapper<T> {
13424 /**
13425 * @see _.maxBy
13426 */
13427 maxBy<T>(
13428 iteratee?: ListIterator<T, any>|DictionaryIterator<T, any>
13429 ): T;
13430
13431 /**
13432 * @see _.maxBy
13433 */
13434 maxBy<T>(
13435 iteratee?: string
13436 ): T;
13437
13438 /**
13439 * @see _.maxBy
13440 */
13441 maxBy<TObject extends {}, T>(
13442 whereValue?: TObject
13443 ): T;
13444 }
13445
13446 //_.mean
13447 interface LoDashStatic {
13448 /**
13449 * Computes the mean of the values in `array`.
13450 *
13451 * @static
13452 * @memberOf _
13453 * @category Math
13454 * @param {Array} array The array to iterate over.
13455 * @returns {number} Returns the mean.
13456 * @example
13457 *
13458 * _.mean([4, 2, 8, 6]);
13459 * // => 5
13460 */
13461 mean<T>(
13462 collection: List<T>
13463 ): number;
13464 }
13465
13466 //_.meanBy
13467 interface LoDashStatic {
13468 /**
13469 * Computes the mean of the provided propties of the objects in the `array`
13470 *
13471 * @static
13472 * @memberOf _
13473 * @category Math
13474 * @param {Array} array The array to iterate over.
13475 * @param {Function|Object|string} [iteratee=_.identity] The iteratee invoked per element.
13476 * @returns {number} Returns the mean.
13477 * @example
13478 *
13479 * _.mean([{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }], 'n');
13480 * // => 5
13481 */
13482 meanBy<T>(
13483 collection: List<T>,
13484 iteratee?: DictionaryIterator<T, any>
13485 ): number;
13486 }
13487
13488 interface LoDashImplicitArrayWrapper<T> {
13489 /**
13490 * @see _.mean
13491 */
13492 mean<T>(): number;
13493
13494 /**
13495 * @see _.mean
13496 */
13497 mean(): number;
13498 }
13499
13500 //_.min
13501 interface LoDashStatic {
13502 /**
13503 * Computes the minimum value of `array`. If `array` is empty or falsey
13504 * `undefined` is returned.
13505 *
13506 * @static
13507 * @memberOf _
13508 * @category Math
13509 * @param {Array} array The array to iterate over.
13510 * @returns {*} Returns the minimum value.
13511 */
13512 min<T>(
13513 collection: List<T>
13514 ): T;
13515 }
13516
13517 interface LoDashImplicitArrayWrapper<T> {
13518 /**
13519 * @see _.min
13520 */
13521 min(): T;
13522 }
13523
13524 interface LoDashImplicitObjectWrapper<T> {
13525 /**
13526 * @see _.min
13527 */
13528 min<T>(): T;
13529 }
13530
13531 //_.minBy
13532 interface LoDashStatic {
13533 /**
13534 * This method is like `_.min` except that it accepts `iteratee` which is
13535 * invoked for each element in `array` to generate the criterion by which
13536 * the value is ranked. The iteratee is invoked with one argument: (value).
13537 *
13538 * @static
13539 * @memberOf _
13540 * @category Math
13541 * @param {Array} array The array to iterate over.
13542 * @param {Function|Object|string} [iteratee=_.identity] The iteratee invoked per element.
13543 * @returns {*} Returns the minimum value.
13544 * @example
13545 *
13546 * var objects = [{ 'n': 1 }, { 'n': 2 }];
13547 *
13548 * _.minBy(objects, function(o) { return o.a; });
13549 * // => { 'n': 1 }
13550 *
13551 * // using the `_.property` iteratee shorthand
13552 * _.minBy(objects, 'n');
13553 * // => { 'n': 1 }
13554 */
13555 minBy<T>(
13556 collection: List<T>,
13557 iteratee?: ListIterator<T, any>
13558 ): T;
13559
13560 /**
13561 * @see _.minBy
13562 */
13563 minBy<T>(
13564 collection: Dictionary<T>,
13565 iteratee?: DictionaryIterator<T, any>
13566 ): T;
13567
13568 /**
13569 * @see _.minBy
13570 */
13571 minBy<T>(
13572 collection: List<T>|Dictionary<T>,
13573 iteratee?: string
13574 ): T;
13575
13576 /**
13577 * @see _.minBy
13578 */
13579 minBy<TObject extends {}, T>(
13580 collection: List<T>|Dictionary<T>,
13581 whereValue?: TObject
13582 ): T;
13583 }
13584
13585 interface LoDashImplicitArrayWrapper<T> {
13586 /**
13587 * @see _.minBy
13588 */
13589 minBy(
13590 iteratee?: ListIterator<T, any>
13591 ): T;
13592
13593 /**
13594 * @see _.minBy
13595 */
13596 minBy(
13597 iteratee?: string
13598 ): T;
13599
13600 /**
13601 * @see _.minBy
13602 */
13603 minBy<TObject extends {}>(
13604 whereValue?: TObject
13605 ): T;
13606 }
13607
13608 interface LoDashImplicitObjectWrapper<T> {
13609 /**
13610 * @see _.minBy
13611 */
13612 minBy<T>(
13613 iteratee?: ListIterator<T, any>|DictionaryIterator<T, any>
13614 ): T;
13615
13616 /**
13617 * @see _.minBy
13618 */
13619 minBy<T>(
13620 iteratee?: string
13621 ): T;
13622
13623 /**
13624 * @see _.minBy
13625 */
13626 minBy<TObject extends {}, T>(
13627 whereValue?: TObject
13628 ): T;
13629 }
13630
13631 //_.round
13632 interface LoDashStatic {
13633 /**
13634 * Calculates n rounded to precision.
13635 *
13636 * @param n The number to round.
13637 * @param precision The precision to round to.
13638 * @return Returns the rounded number.
13639 */
13640 round(
13641 n: number,
13642 precision?: number
13643 ): number;
13644 }
13645
13646 interface LoDashImplicitWrapper<T> {
13647 /**
13648 * @see _.round
13649 */
13650 round(precision?: number): number;
13651 }
13652
13653 interface LoDashExplicitWrapper<T> {
13654 /**
13655 * @see _.round
13656 */
13657 round(precision?: number): LoDashExplicitWrapper<number>;
13658 }
13659
13660 //_.sum
13661 interface LoDashStatic {
13662 /**
13663 * Computes the sum of the values in `array`.
13664 *
13665 * @static
13666 * @memberOf _
13667 * @category Math
13668 * @param {Array} array The array to iterate over.
13669 * @returns {number} Returns the sum.
13670 * @example
13671 *
13672 * _.sum([4, 2, 8, 6]);
13673 * // => 20
13674 */
13675 sum<T>(collection: List<T>): number;
13676
13677 /**
13678 * @see _.sum
13679 */
13680 sum(collection: List<number>|Dictionary<number>): number;
13681 }
13682
13683 interface LoDashImplicitArrayWrapper<T> {
13684 /**
13685 * @see _.sum
13686 */
13687 sum(): number;
13688 }
13689
13690 interface LoDashImplicitObjectWrapper<T> {
13691 /**
13692 * @see _.sum
13693 **/
13694 sum<TValue>(): number;
13695
13696 /**
13697 * @see _.sum
13698 */
13699 sum(): number;
13700 }
13701
13702 interface LoDashExplicitArrayWrapper<T> {
13703 /**
13704 * @see _.sum
13705 */
13706 sum(): LoDashExplicitWrapper<number>;
13707 }
13708
13709 interface LoDashExplicitObjectWrapper<T> {
13710 /**
13711 * @see _.sum
13712 */
13713 sum<TValue>(): LoDashExplicitWrapper<number>;
13714
13715 /**
13716 * @see _.sum
13717 */
13718 sum(): LoDashExplicitWrapper<number>;
13719 }
13720
13721 //_.sumBy
13722 interface LoDashStatic {
13723 /**
13724 * This method is like `_.sum` except that it accepts `iteratee` which is
13725 * invoked for each element in `array` to generate the value to be summed.
13726 * The iteratee is invoked with one argument: (value).
13727 *
13728 * @static
13729 * @memberOf _
13730 * @category Math
13731 * @param {Array} array The array to iterate over.
13732 * @param {Function|Object|string} [iteratee=_.identity] The iteratee invoked per element.
13733 * @returns {number} Returns the sum.
13734 * @example
13735 *
13736 * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
13737 *
13738 * _.sumBy(objects, function(o) { return o.n; });
13739 * // => 20
13740 *
13741 * // using the `_.property` iteratee shorthand
13742 * _.sumBy(objects, 'n');
13743 * // => 20
13744 */
13745 sumBy<T>(
13746 collection: List<T>,
13747 iteratee: ListIterator<T, number>
13748 ): number;
13749
13750 /**
13751 * @see _.sumBy
13752 */
13753 sumBy(
13754 collection: List<{}>,
13755 iteratee: string
13756 ): number;
13757
13758 /**
13759 * @see _.sumBy
13760 */
13761 sumBy(
13762 collection: List<number>
13763 ): number;
13764
13765 /**
13766 * @see _.sumBy
13767 */
13768 sumBy(
13769 collection: List<{}>,
13770 iteratee: Dictionary<{}>
13771 ): number;
13772 }
13773
13774 interface LoDashImplicitArrayWrapper<T> {
13775 /**
13776 * @see _.sumBy
13777 */
13778 sumBy(
13779 iteratee: ListIterator<T, number>
13780 ): number;
13781
13782 /**
13783 * @see _.sumBy
13784 */
13785 sumBy(iteratee: string): number;
13786
13787 /**
13788 * @see _.sumBy
13789 */
13790 sumBy(iteratee: Dictionary<{}>): number;
13791 }
13792
13793 interface LoDashImplicitObjectWrapper<T> {
13794 /**
13795 * @see _.sumBy
13796 */
13797 sumBy(
13798 iteratee: ListIterator<{}, number>
13799 ): number;
13800
13801 /**
13802 * @see _.sumBy
13803 */
13804 sumBy(iteratee: string): number;
13805
13806 /**
13807 * @see _.sumBy
13808 */
13809 sumBy(iteratee: Dictionary<{}>): number;
13810 }
13811
13812 interface LoDashExplicitArrayWrapper<T> {
13813 /**
13814 * @see _.sumBy
13815 */
13816 sumBy(
13817 iteratee: ListIterator<T, number>
13818 ): LoDashExplicitWrapper<number>;
13819
13820 /**
13821 * @see _.sumBy
13822 */
13823 sumBy(iteratee: string): LoDashExplicitWrapper<number>;
13824
13825 /**
13826 * @see _.sumBy
13827 */
13828 sumBy(): LoDashExplicitWrapper<number>;
13829
13830 /**
13831 * @see _.sumBy
13832 */
13833 sumBy(iteratee: Dictionary<{}>): LoDashExplicitWrapper<number>;
13834 }
13835
13836 interface LoDashExplicitObjectWrapper<T> {
13837 /**
13838 * @see _.sumBy
13839 */
13840 sumBy(
13841 iteratee: ListIterator<{}, number>
13842 ): LoDashExplicitWrapper<number>;
13843
13844 /**
13845 * @see _.sumBy
13846 */
13847 sumBy(iteratee: string): LoDashExplicitWrapper<number>;
13848
13849 /**
13850 * @see _.sumBy
13851 */
13852 sumBy(iteratee: Dictionary<{}>): LoDashExplicitWrapper<number>;
13853 }
13854
13855 /**********
13856 * Number *
13857 **********/
13858
13859 //_.subtract
13860 interface LoDashStatic {
13861 /**
13862 * Subtract two numbers.
13863 *
13864 * @static
13865 * @memberOf _
13866 * @category Math
13867 * @param {number} minuend The first number in a subtraction.
13868 * @param {number} subtrahend The second number in a subtraction.
13869 * @returns {number} Returns the difference.
13870 * @example
13871 *
13872 * _.subtract(6, 4);
13873 * // => 2
13874 */
13875 subtract(
13876 minuend: number,
13877 subtrahend: number
13878 ): number;
13879 }
13880
13881 interface LoDashImplicitWrapper<T> {
13882 /**
13883 * @see _.subtract
13884 */
13885 subtract(
13886 subtrahend: number
13887 ): number;
13888 }
13889
13890 interface LoDashExplicitWrapper<T> {
13891 /**
13892 * @see _.subtract
13893 */
13894 subtract(
13895 subtrahend: number
13896 ): LoDashExplicitWrapper<number>;
13897 }
13898
13899 //_.clamp
13900 interface LoDashStatic {
13901 /**
13902 * Clamps `number` within the inclusive `lower` and `upper` bounds.
13903 *
13904 * @static
13905 * @memberOf _
13906 * @category Number
13907 * @param {number} number The number to clamp.
13908 * @param {number} [lower] The lower bound.
13909 * @param {number} upper The upper bound.
13910 * @returns {number} Returns the clamped number.
13911 * @example
13912 *
13913 * _.clamp(-10, -5, 5);
13914 * // => -5
13915 *
13916 * _.clamp(10, -5, 5);
13917 * // => 5
13918 */
13919 clamp(
13920 number: number,
13921 lower: number,
13922 upper: number
13923 ): number;
13924 }
13925
13926 interface LoDashImplicitWrapper<T> {
13927 /**
13928 * @see _.clamp
13929 */
13930 clamp(
13931 lower: number,
13932 upper: number
13933 ): number;
13934 }
13935
13936 interface LoDashExplicitWrapper<T> {
13937 /**
13938 * @see _.clamp
13939 */
13940 clamp(
13941 lower: number,
13942 upper: number
13943 ): LoDashExplicitWrapper<number>;
13944 }
13945
13946 //_.inRange
13947 interface LoDashStatic {
13948 /**
13949 * Checks if n is between start and up to but not including, end. If end is not specified it’s set to start
13950 * with start then set to 0.
13951 *
13952 * @param n The number to check.
13953 * @param start The start of the range.
13954 * @param end The end of the range.
13955 * @return Returns true if n is in the range, else false.
13956 */
13957 inRange(
13958 n: number,
13959 start: number,
13960 end: number
13961 ): boolean;
13962
13963 /**
13964 * @see _.inRange
13965 */
13966 inRange(
13967 n: number,
13968 end: number
13969 ): boolean;
13970 }
13971
13972 interface LoDashImplicitWrapper<T> {
13973 /**
13974 * @see _.inRange
13975 */
13976 inRange(
13977 start: number,
13978 end: number
13979 ): boolean;
13980
13981 /**
13982 * @see _.inRange
13983 */
13984 inRange(end: number): boolean;
13985 }
13986
13987 interface LoDashExplicitWrapper<T> {
13988 /**
13989 * @see _.inRange
13990 */
13991 inRange(
13992 start: number,
13993 end: number
13994 ): LoDashExplicitWrapper<boolean>;
13995
13996 /**
13997 * @see _.inRange
13998 */
13999 inRange(end: number): LoDashExplicitWrapper<boolean>;
14000 }
14001
14002 //_.random
14003 interface LoDashStatic {
14004 /**
14005 * Produces a random number between min and max (inclusive). If only one argument is provided a number between
14006 * 0 and the given number is returned. If floating is true, or either min or max are floats, a floating-point
14007 * number is returned instead of an integer.
14008 *
14009 * @param min The minimum possible value.
14010 * @param max The maximum possible value.
14011 * @param floating Specify returning a floating-point number.
14012 * @return Returns the random number.
14013 */
14014 random(
14015 min?: number,
14016 max?: number,
14017 floating?: boolean
14018 ): number;
14019
14020 /**
14021 * @see _.random
14022 */
14023 random(
14024 min?: number,
14025 floating?: boolean
14026 ): number;
14027
14028 /**
14029 * @see _.random
14030 */
14031 random(floating?: boolean): number;
14032 }
14033
14034 interface LoDashImplicitWrapper<T> {
14035 /**
14036 * @see _.random
14037 */
14038 random(
14039 max?: number,
14040 floating?: boolean
14041 ): number;
14042
14043 /**
14044 * @see _.random
14045 */
14046 random(floating?: boolean): number;
14047 }
14048
14049 interface LoDashExplicitWrapper<T> {
14050 /**
14051 * @see _.random
14052 */
14053 random(
14054 max?: number,
14055 floating?: boolean
14056 ): LoDashExplicitWrapper<number>;
14057
14058 /**
14059 * @see _.random
14060 */
14061 random(floating?: boolean): LoDashExplicitWrapper<number>;
14062 }
14063
14064 /**********
14065 * Object *
14066 **********/
14067
14068 //_.assign
14069 interface LoDashStatic {
14070 /**
14071 * Assigns own enumerable properties of source objects to the destination
14072 * object. Source objects are applied from left to right. Subsequent sources
14073 * overwrite property assignments of previous sources.
14074 *
14075 * **Note:** This method mutates `object` and is loosely based on
14076 * [`Object.assign`](https://mdn.io/Object/assign).
14077 *
14078 * @static
14079 * @memberOf _
14080 * @category Object
14081 * @param {Object} object The destination object.
14082 * @param {...Object} [sources] The source objects.
14083 * @returns {Object} Returns `object`.
14084 * @example
14085 *
14086 * function Foo() {
14087 * this.c = 3;
14088 * }
14089 *
14090 * function Bar() {
14091 * this.e = 5;
14092 * }
14093 *
14094 * Foo.prototype.d = 4;
14095 * Bar.prototype.f = 6;
14096 *
14097 * _.assign({ 'a': 1 }, new Foo, new Bar);
14098 * // => { 'a': 1, 'c': 3, 'e': 5 }
14099 */
14100 assign<TObject, TSource>(
14101 object: TObject,
14102 source: TSource
14103 ): TObject & TSource;
14104
14105 /**
14106 * @see assign
14107 */
14108 assign<TObject, TSource1, TSource2>(
14109 object: TObject,
14110 source1: TSource1,
14111 source2: TSource2
14112 ): TObject & TSource1 & TSource2;
14113
14114 /**
14115 * @see assign
14116 */
14117 assign<TObject, TSource1, TSource2, TSource3>(
14118 object: TObject,
14119 source1: TSource1,
14120 source2: TSource2,
14121 source3: TSource3
14122 ): TObject & TSource1 & TSource2 & TSource3;
14123
14124 /**
14125 * @see assign
14126 */
14127 assign<TObject, TSource1, TSource2, TSource3, TSource4>(
14128 object: TObject,
14129 source1: TSource1,
14130 source2: TSource2,
14131 source3: TSource3,
14132 source4: TSource4
14133 ): TObject & TSource1 & TSource2 & TSource3 & TSource4;
14134
14135 /**
14136 * @see _.assign
14137 */
14138 assign<TObject>(object: TObject): TObject;
14139
14140 /**
14141 * @see _.assign
14142 */
14143 assign<TResult>(
14144 object: any,
14145 ...otherArgs: any[]
14146 ): TResult;
14147 }
14148
14149 interface LoDashImplicitObjectWrapper<T> {
14150 /**
14151 * @see _.assign
14152 */
14153 assign<TSource>(
14154 source: TSource
14155 ): LoDashImplicitObjectWrapper<T & TSource>;
14156
14157 /**
14158 * @see assign
14159 */
14160 assign<TSource1, TSource2>(
14161 source1: TSource1,
14162 source2: TSource2
14163 ): LoDashImplicitObjectWrapper<T & TSource1 & TSource2>;
14164
14165 /**
14166 * @see assign
14167 */
14168 assign<TSource1, TSource2, TSource3>(
14169 source1: TSource1,
14170 source2: TSource2,
14171 source3: TSource3
14172 ): LoDashImplicitObjectWrapper<T & TSource1 & TSource2 & TSource3>;
14173
14174 /**
14175 * @see assign
14176 */
14177 assign<TSource1, TSource2, TSource3, TSource4>(
14178 source1: TSource1,
14179 source2: TSource2,
14180 source3: TSource3,
14181 source4: TSource4
14182 ): LoDashImplicitObjectWrapper<T & TSource1 & TSource2 & TSource3 & TSource4>;
14183
14184 /**
14185 * @see _.assign
14186 */
14187 assign(): LoDashImplicitObjectWrapper<T>;
14188
14189 /**
14190 * @see _.assign
14191 */
14192 assign<TResult>(...otherArgs: any[]): LoDashImplicitObjectWrapper<TResult>;
14193 }
14194
14195 interface LoDashExplicitObjectWrapper<T> {
14196 /**
14197 * @see _.assign
14198 */
14199 assign<TSource>(
14200 source: TSource
14201 ): LoDashExplicitObjectWrapper<T & TSource>;
14202
14203 /**
14204 * @see assign
14205 */
14206 assign<TSource1, TSource2>(
14207 source1: TSource1,
14208 source2: TSource2
14209 ): LoDashExplicitObjectWrapper<T & TSource1 & TSource2>;
14210
14211 /**
14212 * @see assign
14213 */
14214 assign<TSource1, TSource2, TSource3>(
14215 source1: TSource1,
14216 source2: TSource2,
14217 source3: TSource3
14218 ): LoDashExplicitObjectWrapper<T & TSource1 & TSource2 & TSource3>;
14219
14220 /**
14221 * @see assign
14222 */
14223 assign<TSource1, TSource2, TSource3, TSource4>(
14224 source1: TSource1,
14225 source2: TSource2,
14226 source3: TSource3,
14227 source4: TSource4
14228 ): LoDashExplicitObjectWrapper<T & TSource1 & TSource2 & TSource3 & TSource4>;
14229
14230 /**
14231 * @see _.assign
14232 */
14233 assign(): LoDashExplicitObjectWrapper<T>;
14234
14235 /**
14236 * @see _.assign
14237 */
14238 assign<TResult>(...otherArgs: any[]): LoDashExplicitObjectWrapper<TResult>;
14239 }
14240
14241 interface LoDashStatic {
14242 /**
14243 * This method is like `_.assign` except that it accepts `customizer` which
14244 * is invoked to produce the assigned values. If `customizer` returns `undefined`
14245 * assignment is handled by the method instead. The `customizer` is invoked
14246 * with five arguments: (objValue, srcValue, key, object, source).
14247 *
14248 * **Note:** This method mutates `object`.
14249 *
14250 * @static
14251 * @memberOf _
14252 * @category Object
14253 * @param {Object} object The destination object.
14254 * @param {...Object} sources The source objects.
14255 * @param {Function} [customizer] The function to customize assigned values.
14256 * @returns {Object} Returns `object`.
14257 * @example
14258 *
14259 * function customizer(objValue, srcValue) {
14260 * return _.isUndefined(objValue) ? srcValue : objValue;
14261 * }
14262 *
14263 * var defaults = _.partialRight(_.assignWith, customizer);
14264 *
14265 * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
14266 * // => { 'a': 1, 'b': 2 }
14267 */
14268 assignWith<TObject, TSource>(
14269 object: TObject,
14270 source: TSource,
14271 customizer: AssignCustomizer
14272 ): TObject & TSource;
14273
14274 /**
14275 * @see assignWith
14276 */
14277 assignWith<TObject, TSource1, TSource2>(
14278 object: TObject,
14279 source1: TSource1,
14280 source2: TSource2,
14281 customizer: AssignCustomizer
14282 ): TObject & TSource1 & TSource2;
14283
14284 /**
14285 * @see assignWith
14286 */
14287 assignWith<TObject, TSource1, TSource2, TSource3>(
14288 object: TObject,
14289 source1: TSource1,
14290 source2: TSource2,
14291 source3: TSource3,
14292 customizer: AssignCustomizer
14293 ): TObject & TSource1 & TSource2 & TSource3;
14294
14295 /**
14296 * @see assignWith
14297 */
14298 assignWith<TObject, TSource1, TSource2, TSource3, TSource4>(
14299 object: TObject,
14300 source1: TSource1,
14301 source2: TSource2,
14302 source3: TSource3,
14303 source4: TSource4,
14304 customizer: AssignCustomizer
14305 ): TObject & TSource1 & TSource2 & TSource3 & TSource4;
14306
14307 /**
14308 * @see _.assignWith
14309 */
14310 assignWith<TObject>(object: TObject): TObject;
14311
14312 /**
14313 * @see _.assignWith
14314 */
14315 assignWith<TResult>(
14316 object: any,
14317 ...otherArgs: any[]
14318 ): TResult;
14319 }
14320
14321 interface LoDashImplicitObjectWrapper<T> {
14322 /**
14323 * @see _.assignWith
14324 */
14325 assignWith<TSource>(
14326 source: TSource,
14327 customizer: AssignCustomizer
14328 ): LoDashImplicitObjectWrapper<T & TSource>;
14329
14330 /**
14331 * @see assignWith
14332 */
14333 assignWith<TSource1, TSource2>(
14334 source1: TSource1,
14335 source2: TSource2,
14336 customizer: AssignCustomizer
14337 ): LoDashImplicitObjectWrapper<T & TSource1 & TSource2>;
14338
14339 /**
14340 * @see assignWith
14341 */
14342 assignWith<TSource1, TSource2, TSource3>(
14343 source1: TSource1,
14344 source2: TSource2,
14345 source3: TSource3,
14346 customizer: AssignCustomizer
14347 ): LoDashImplicitObjectWrapper<T & TSource1 & TSource2 & TSource3>;
14348
14349 /**
14350 * @see assignWith
14351 */
14352 assignWith<TSource1, TSource2, TSource3, TSource4>(
14353 source1: TSource1,
14354 source2: TSource2,
14355 source3: TSource3,
14356 source4: TSource4,
14357 customizer: AssignCustomizer
14358 ): LoDashImplicitObjectWrapper<T & TSource1 & TSource2 & TSource3 & TSource4>;
14359
14360 /**
14361 * @see _.assignWith
14362 */
14363 assignWith(): LoDashImplicitObjectWrapper<T>;
14364
14365 /**
14366 * @see _.assignWith
14367 */
14368 assignWith<TResult>(...otherArgs: any[]): LoDashImplicitObjectWrapper<TResult>;
14369 }
14370
14371 interface LoDashExplicitObjectWrapper<T> {
14372 /**
14373 * @see _.assignWith
14374 */
14375 assignWith<TSource>(
14376 source: TSource,
14377 customizer: AssignCustomizer
14378 ): LoDashExplicitObjectWrapper<T & TSource>;
14379
14380 /**
14381 * @see assignWith
14382 */
14383 assignWith<TSource1, TSource2>(
14384 source1: TSource1,
14385 source2: TSource2,
14386 customizer: AssignCustomizer
14387 ): LoDashExplicitObjectWrapper<T & TSource1 & TSource2>;
14388
14389 /**
14390 * @see assignWith
14391 */
14392 assignWith<TSource1, TSource2, TSource3>(
14393 source1: TSource1,
14394 source2: TSource2,
14395 source3: TSource3,
14396 customizer: AssignCustomizer
14397 ): LoDashExplicitObjectWrapper<T & TSource1 & TSource2 & TSource3>;
14398
14399 /**
14400 * @see assignWith
14401 */
14402 assignWith<TSource1, TSource2, TSource3, TSource4>(
14403 source1: TSource1,
14404 source2: TSource2,
14405 source3: TSource3,
14406 source4: TSource4,
14407 customizer: AssignCustomizer
14408 ): LoDashExplicitObjectWrapper<T & TSource1 & TSource2 & TSource3 & TSource4>;
14409
14410 /**
14411 * @see _.assignWith
14412 */
14413 assignWith(): LoDashExplicitObjectWrapper<T>;
14414
14415 /**
14416 * @see _.assignWith
14417 */
14418 assignWith<TResult>(...otherArgs: any[]): LoDashExplicitObjectWrapper<TResult>;
14419 }
14420
14421 //_.assignIn
14422 interface LoDashStatic {
14423 /**
14424 * This method is like `_.assign` except that it iterates over own and
14425 * inherited source properties.
14426 *
14427 * **Note:** This method mutates `object`.
14428 *
14429 * @static
14430 * @memberOf _
14431 * @alias extend
14432 * @category Object
14433 * @param {Object} object The destination object.
14434 * @param {...Object} [sources] The source objects.
14435 * @returns {Object} Returns `object`.
14436 * @example
14437 *
14438 * function Foo() {
14439 * this.b = 2;
14440 * }
14441 *
14442 * function Bar() {
14443 * this.d = 4;
14444 * }
14445 *
14446 * Foo.prototype.c = 3;
14447 * Bar.prototype.e = 5;
14448 *
14449 * _.assignIn({ 'a': 1 }, new Foo, new Bar);
14450 * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5 }
14451 */
14452 assignIn<TObject, TSource>(
14453 object: TObject,
14454 source: TSource
14455 ): TObject & TSource;
14456
14457 /**
14458 * @see assignIn
14459 */
14460 assignIn<TObject, TSource1, TSource2>(
14461 object: TObject,
14462 source1: TSource1,
14463 source2: TSource2
14464 ): TObject & TSource1 & TSource2;
14465
14466 /**
14467 * @see assignIn
14468 */
14469 assignIn<TObject, TSource1, TSource2, TSource3>(
14470 object: TObject,
14471 source1: TSource1,
14472 source2: TSource2,
14473 source3: TSource3
14474 ): TObject & TSource1 & TSource2 & TSource3;
14475
14476 /**
14477 * @see assignIn
14478 */
14479 assignIn<TObject, TSource1, TSource2, TSource3, TSource4>(
14480 object: TObject,
14481 source1: TSource1,
14482 source2: TSource2,
14483 source3: TSource3,
14484 source4: TSource4
14485 ): TObject & TSource1 & TSource2 & TSource3 & TSource4;
14486
14487 /**
14488 * @see _.assignIn
14489 */
14490 assignIn<TObject>(object: TObject): TObject;
14491
14492 /**
14493 * @see _.assignIn
14494 */
14495 assignIn<TResult>(
14496 object: any,
14497 ...otherArgs: any[]
14498 ): TResult;
14499 }
14500
14501 interface LoDashImplicitObjectWrapper<T> {
14502 /**
14503 * @see _.assignIn
14504 */
14505 assignIn<TSource>(
14506 source: TSource
14507 ): LoDashImplicitObjectWrapper<T & TSource>;
14508
14509 /**
14510 * @see assignIn
14511 */
14512 assignIn<TSource1, TSource2>(
14513 source1: TSource1,
14514 source2: TSource2
14515 ): LoDashImplicitObjectWrapper<T & TSource1 & TSource2>;
14516
14517 /**
14518 * @see assignIn
14519 */
14520 assignIn<TSource1, TSource2, TSource3>(
14521 source1: TSource1,
14522 source2: TSource2,
14523 source3: TSource3
14524 ): LoDashImplicitObjectWrapper<T & TSource1 & TSource2 & TSource3>;
14525
14526 /**
14527 * @see assignIn
14528 */
14529 assignIn<TSource1, TSource2, TSource3, TSource4>(
14530 source1: TSource1,
14531 source2: TSource2,
14532 source3: TSource3,
14533 source4: TSource4
14534 ): LoDashImplicitObjectWrapper<T & TSource1 & TSource2 & TSource3 & TSource4>;
14535
14536 /**
14537 * @see _.assignIn
14538 */
14539 assignIn(): LoDashImplicitObjectWrapper<T>;
14540
14541 /**
14542 * @see _.assignIn
14543 */
14544 assignIn<TResult>(...otherArgs: any[]): LoDashImplicitObjectWrapper<TResult>;
14545 }
14546
14547 interface LoDashExplicitObjectWrapper<T> {
14548 /**
14549 * @see _.assignIn
14550 */
14551 assignIn<TSource>(
14552 source: TSource
14553 ): LoDashExplicitObjectWrapper<T & TSource>;
14554
14555 /**
14556 * @see assignIn
14557 */
14558 assignIn<TSource1, TSource2>(
14559 source1: TSource1,
14560 source2: TSource2
14561 ): LoDashExplicitObjectWrapper<T & TSource1 & TSource2>;
14562
14563 /**
14564 * @see assignIn
14565 */
14566 assignIn<TSource1, TSource2, TSource3>(
14567 source1: TSource1,
14568 source2: TSource2,
14569 source3: TSource3
14570 ): LoDashExplicitObjectWrapper<T & TSource1 & TSource2 & TSource3>;
14571
14572 /**
14573 * @see assignIn
14574 */
14575 assignIn<TSource1, TSource2, TSource3, TSource4>(
14576 source1: TSource1,
14577 source2: TSource2,
14578 source3: TSource3,
14579 source4: TSource4
14580 ): LoDashExplicitObjectWrapper<T & TSource1 & TSource2 & TSource3 & TSource4>;
14581
14582 /**
14583 * @see _.assignIn
14584 */
14585 assignIn(): LoDashExplicitObjectWrapper<T>;
14586
14587 /**
14588 * @see _.assignIn
14589 */
14590 assignIn<TResult>(...otherArgs: any[]): LoDashExplicitObjectWrapper<TResult>;
14591 }
14592
14593 //_.assignInWith
14594 type AssignCustomizer = (objectValue: any, sourceValue: any, key?: string, object?: {}, source?: {}) => any;
14595
14596 interface LoDashStatic {
14597 /**
14598 * This method is like `_.assignIn` except that it accepts `customizer` which
14599 * is invoked to produce the assigned values. If `customizer` returns `undefined`
14600 * assignment is handled by the method instead. The `customizer` is invoked
14601 * with five arguments: (objValue, srcValue, key, object, source).
14602 *
14603 * **Note:** This method mutates `object`.
14604 *
14605 * @static
14606 * @memberOf _
14607 * @alias extendWith
14608 * @category Object
14609 * @param {Object} object The destination object.
14610 * @param {...Object} sources The source objects.
14611 * @param {Function} [customizer] The function to customize assigned values.
14612 * @returns {Object} Returns `object`.
14613 * @example
14614 *
14615 * function customizer(objValue, srcValue) {
14616 * return _.isUndefined(objValue) ? srcValue : objValue;
14617 * }
14618 *
14619 * var defaults = _.partialRight(_.assignInWith, customizer);
14620 *
14621 * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
14622 * // => { 'a': 1, 'b': 2 }
14623 */
14624 assignInWith<TObject, TSource>(
14625 object: TObject,
14626 source: TSource,
14627 customizer: AssignCustomizer
14628 ): TObject & TSource;
14629
14630 /**
14631 * @see assignInWith
14632 */
14633 assignInWith<TObject, TSource1, TSource2>(
14634 object: TObject,
14635 source1: TSource1,
14636 source2: TSource2,
14637 customizer: AssignCustomizer
14638 ): TObject & TSource1 & TSource2;
14639
14640 /**
14641 * @see assignInWith
14642 */
14643 assignInWith<TObject, TSource1, TSource2, TSource3>(
14644 object: TObject,
14645 source1: TSource1,
14646 source2: TSource2,
14647 source3: TSource3,
14648 customizer: AssignCustomizer
14649 ): TObject & TSource1 & TSource2 & TSource3;
14650
14651 /**
14652 * @see assignInWith
14653 */
14654 assignInWith<TObject, TSource1, TSource2, TSource3, TSource4>(
14655 object: TObject,
14656 source1: TSource1,
14657 source2: TSource2,
14658 source3: TSource3,
14659 source4: TSource4,
14660 customizer: AssignCustomizer
14661 ): TObject & TSource1 & TSource2 & TSource3 & TSource4;
14662
14663 /**
14664 * @see _.assignInWith
14665 */
14666 assignInWith<TObject>(object: TObject): TObject;
14667
14668 /**
14669 * @see _.assignInWith
14670 */
14671 assignInWith<TResult>(
14672 object: any,
14673 ...otherArgs: any[]
14674 ): TResult;
14675 }
14676
14677 interface LoDashImplicitObjectWrapper<T> {
14678 /**
14679 * @see _.assignInWith
14680 */
14681 assignInWith<TSource>(
14682 source: TSource,
14683 customizer: AssignCustomizer
14684 ): LoDashImplicitObjectWrapper<T & TSource>;
14685
14686 /**
14687 * @see assignInWith
14688 */
14689 assignInWith<TSource1, TSource2>(
14690 source1: TSource1,
14691 source2: TSource2,
14692 customizer: AssignCustomizer
14693 ): LoDashImplicitObjectWrapper<T & TSource1 & TSource2>;
14694
14695 /**
14696 * @see assignInWith
14697 */
14698 assignInWith<TSource1, TSource2, TSource3>(
14699 source1: TSource1,
14700 source2: TSource2,
14701 source3: TSource3,
14702 customizer: AssignCustomizer
14703 ): LoDashImplicitObjectWrapper<T & TSource1 & TSource2 & TSource3>;
14704
14705 /**
14706 * @see assignInWith
14707 */
14708 assignInWith<TSource1, TSource2, TSource3, TSource4>(
14709 source1: TSource1,
14710 source2: TSource2,
14711 source3: TSource3,
14712 source4: TSource4,
14713 customizer: AssignCustomizer
14714 ): LoDashImplicitObjectWrapper<T & TSource1 & TSource2 & TSource3 & TSource4>;
14715
14716 /**
14717 * @see _.assignInWith
14718 */
14719 assignInWith(): LoDashImplicitObjectWrapper<T>;
14720
14721 /**
14722 * @see _.assignInWith
14723 */
14724 assignInWith<TResult>(...otherArgs: any[]): LoDashImplicitObjectWrapper<TResult>;
14725 }
14726
14727 interface LoDashExplicitObjectWrapper<T> {
14728 /**
14729 * @see _.assignInWith
14730 */
14731 assignInWith<TSource>(
14732 source: TSource,
14733 customizer: AssignCustomizer
14734 ): LoDashExplicitObjectWrapper<T & TSource>;
14735
14736 /**
14737 * @see assignInWith
14738 */
14739 assignInWith<TSource1, TSource2>(
14740 source1: TSource1,
14741 source2: TSource2,
14742 customizer: AssignCustomizer
14743 ): LoDashExplicitObjectWrapper<T & TSource1 & TSource2>;
14744
14745 /**
14746 * @see assignInWith
14747 */
14748 assignInWith<TSource1, TSource2, TSource3>(
14749 source1: TSource1,
14750 source2: TSource2,
14751 source3: TSource3,
14752 customizer: AssignCustomizer
14753 ): LoDashExplicitObjectWrapper<T & TSource1 & TSource2 & TSource3>;
14754
14755 /**
14756 * @see assignInWith
14757 */
14758 assignInWith<TSource1, TSource2, TSource3, TSource4>(
14759 source1: TSource1,
14760 source2: TSource2,
14761 source3: TSource3,
14762 source4: TSource4,
14763 customizer: AssignCustomizer
14764 ): LoDashExplicitObjectWrapper<T & TSource1 & TSource2 & TSource3 & TSource4>;
14765
14766 /**
14767 * @see _.assignInWith
14768 */
14769 assignInWith(): LoDashExplicitObjectWrapper<T>;
14770
14771 /**
14772 * @see _.assignInWith
14773 */
14774 assignInWith<TResult>(...otherArgs: any[]): LoDashExplicitObjectWrapper<TResult>;
14775 }
14776
14777 //_.create
14778 interface LoDashStatic {
14779 /**
14780 * Creates an object that inherits from the given prototype object. If a properties object is provided its own
14781 * enumerable properties are assigned to the created object.
14782 *
14783 * @param prototype The object to inherit from.
14784 * @param properties The properties to assign to the object.
14785 * @return Returns the new object.
14786 */
14787 create<T extends Object, U extends Object>(
14788 prototype: T,
14789 properties?: U
14790 ): T & U;
14791 }
14792
14793 interface LoDashImplicitObjectWrapper<T> {
14794 /**
14795 * @see _.create
14796 */
14797 create<U extends Object>(properties?: U): LoDashImplicitObjectWrapper<T & U>;
14798 }
14799
14800 interface LoDashExplicitObjectWrapper<T> {
14801 /**
14802 * @see _.create
14803 */
14804 create<U extends Object>(properties?: U): LoDashExplicitObjectWrapper<T & U>;
14805 }
14806
14807 //_.defaults
14808 interface LoDashStatic {
14809 /**
14810 * Assigns own enumerable properties of source object(s) to the destination object for all destination
14811 * properties that resolve to undefined. Once a property is set, additional values of the same property are
14812 * ignored.
14813 *
14814 * Note: This method mutates object.
14815 *
14816 * @param object The destination object.
14817 * @param sources The source objects.
14818 * @return The destination object.
14819 */
14820 defaults<TObject, TSource>(
14821 object: TObject,
14822 source: TSource
14823 ): TSource & TObject;
14824
14825 /**
14826 * @see _.defaults
14827 */
14828 defaults<TObject, TSource1, TSource2>(
14829 object: TObject,
14830 source1: TSource1,
14831 source2: TSource2
14832 ): TSource2 & TSource1 & TObject;
14833
14834 /**
14835 * @see _.defaults
14836 */
14837 defaults<TObject, TSource1, TSource2, TSource3>(
14838 object: TObject,
14839 source1: TSource1,
14840 source2: TSource2,
14841 source3: TSource3
14842 ): TSource3 & TSource2 & TSource1 & TObject;
14843
14844 /**
14845 * @see _.defaults
14846 */
14847 defaults<TObject, TSource1, TSource2, TSource3, TSource4>(
14848 object: TObject,
14849 source1: TSource1,
14850 source2: TSource2,
14851 source3: TSource3,
14852 source4: TSource4
14853 ): TSource4 & TSource3 & TSource2 & TSource1 & TObject;
14854
14855 /**
14856 * @see _.defaults
14857 */
14858 defaults<TObject>(object: TObject): TObject;
14859
14860 /**
14861 * @see _.defaults
14862 */
14863 defaults<TResult>(
14864 object: any,
14865 ...sources: any[]
14866 ): TResult;
14867 }
14868
14869 interface LoDashImplicitObjectWrapper<T> {
14870 /**
14871 * @see _.defaults
14872 */
14873 defaults<TSource>(
14874 source: TSource
14875 ): LoDashImplicitObjectWrapper<TSource & T>;
14876
14877 /**
14878 * @see _.defaults
14879 */
14880 defaults<TSource1, TSource2>(
14881 source1: TSource1,
14882 source2: TSource2
14883 ): LoDashImplicitObjectWrapper<TSource2 & TSource1 & T>;
14884
14885 /**
14886 * @see _.defaults
14887 */
14888 defaults<TSource1, TSource2, TSource3>(
14889 source1: TSource1,
14890 source2: TSource2,
14891 source3: TSource3
14892 ): LoDashImplicitObjectWrapper<TSource3 & TSource2 & TSource1 & T>;
14893
14894 /**
14895 * @see _.defaults
14896 */
14897 defaults<TSource1, TSource2, TSource3, TSource4>(
14898 source1: TSource1,
14899 source2: TSource2,
14900 source3: TSource3,
14901 source4: TSource4
14902 ): LoDashImplicitObjectWrapper<TSource4 & TSource3 & TSource2 & TSource1 & T>;
14903
14904 /**
14905 * @see _.defaults
14906 */
14907 defaults(): LoDashImplicitObjectWrapper<T>;
14908
14909 /**
14910 * @see _.defaults
14911 */
14912 defaults<TResult>(...sources: any[]): LoDashImplicitObjectWrapper<TResult>;
14913 }
14914
14915 interface LoDashExplicitObjectWrapper<T> {
14916 /**
14917 * @see _.defaults
14918 */
14919 defaults<TSource>(
14920 source: TSource
14921 ): LoDashExplicitObjectWrapper<TSource & T>;
14922
14923 /**
14924 * @see _.defaults
14925 */
14926 defaults<TSource1, TSource2>(
14927 source1: TSource1,
14928 source2: TSource2
14929 ): LoDashExplicitObjectWrapper<TSource2 & TSource1 & T>;
14930
14931 /**
14932 * @see _.defaults
14933 */
14934 defaults<TSource1, TSource2, TSource3>(
14935 source1: TSource1,
14936 source2: TSource2,
14937 source3: TSource3
14938 ): LoDashExplicitObjectWrapper<TSource3 & TSource2 & TSource1 & T>;
14939
14940 /**
14941 * @see _.defaults
14942 */
14943 defaults<TSource1, TSource2, TSource3, TSource4>(
14944 source1: TSource1,
14945 source2: TSource2,
14946 source3: TSource3,
14947 source4: TSource4
14948 ): LoDashExplicitObjectWrapper<TSource4 & TSource3 & TSource2 & TSource1 & T>;
14949
14950 /**
14951 * @see _.defaults
14952 */
14953 defaults(): LoDashExplicitObjectWrapper<T>;
14954
14955 /**
14956 * @see _.defaults
14957 */
14958 defaults<TResult>(...sources: any[]): LoDashExplicitObjectWrapper<TResult>;
14959 }
14960
14961 //_.defaultsDeep
14962 interface LoDashStatic {
14963 /**
14964 * This method is like _.defaults except that it recursively assigns default properties.
14965 * @param object The destination object.
14966 * @param sources The source objects.
14967 * @return Returns object.
14968 **/
14969 defaultsDeep<T, TResult>(
14970 object: T,
14971 ...sources: any[]): TResult;
14972 }
14973
14974 interface LoDashImplicitObjectWrapper<T> {
14975 /**
14976 * @see _.defaultsDeep
14977 **/
14978 defaultsDeep<TResult>(...sources: any[]): LoDashImplicitObjectWrapper<TResult>;
14979 }
14980
14981 // _.extend
14982 interface LoDashStatic {
14983 /**
14984 * @see _.assignIn
14985 */
14986 extend<TObject, TSource>(
14987 object: TObject,
14988 source: TSource
14989 ): TObject & TSource;
14990
14991 /**
14992 * @see _.assignIn
14993 */
14994 extend<TObject, TSource1, TSource2>(
14995 object: TObject,
14996 source1: TSource1,
14997 source2: TSource2
14998 ): TObject & TSource1 & TSource2;
14999
15000 /**
15001 * @see _.assignIn
15002 */
15003 extend<TObject, TSource1, TSource2, TSource3>(
15004 object: TObject,
15005 source1: TSource1,
15006 source2: TSource2,
15007 source3: TSource3
15008 ): TObject & TSource1 & TSource2 & TSource3;
15009
15010 /**
15011 * @see _.assignIn
15012 */
15013 extend<TObject, TSource1, TSource2, TSource3, TSource4>(
15014 object: TObject,
15015 source1: TSource1,
15016 source2: TSource2,
15017 source3: TSource3,
15018 source4: TSource4
15019 ): TObject & TSource1 & TSource2 & TSource3 & TSource4;
15020
15021 /**
15022 * @see _.assignIn
15023 */
15024 extend<TObject>(object: TObject): TObject;
15025
15026 /**
15027 * @see _.assignIn
15028 */
15029 extend<TResult>(
15030 object: any,
15031 ...otherArgs: any[]
15032 ): TResult;
15033 }
15034
15035 interface LoDashImplicitObjectWrapper<T> {
15036 /**
15037 * @see _.assignIn
15038 */
15039 extend<TSource>(
15040 source: TSource
15041 ): LoDashImplicitObjectWrapper<T & TSource>;
15042
15043 /**
15044 * @see _.assignIn
15045 */
15046 extend<TSource1, TSource2>(
15047 source1: TSource1,
15048 source2: TSource2
15049 ): LoDashImplicitObjectWrapper<T & TSource1 & TSource2>;
15050
15051 /**
15052 * @see _.assignIn
15053 */
15054 extend<TSource1, TSource2, TSource3>(
15055 source1: TSource1,
15056 source2: TSource2,
15057 source3: TSource3
15058 ): LoDashImplicitObjectWrapper<T & TSource1 & TSource2 & TSource3>;
15059
15060 /**
15061 * @see _.assignIn
15062 */
15063 extend<TSource1, TSource2, TSource3, TSource4>(
15064 source1: TSource1,
15065 source2: TSource2,
15066 source3: TSource3,
15067 source4: TSource4
15068 ): LoDashImplicitObjectWrapper<T & TSource1 & TSource2 & TSource3 & TSource4>;
15069
15070 /**
15071 * @see _.assignIn
15072 */
15073 extend(): LoDashImplicitObjectWrapper<T>;
15074
15075 /**
15076 * @see _.assignIn
15077 */
15078 extend<TResult>(...otherArgs: any[]): LoDashImplicitObjectWrapper<TResult>;
15079 }
15080
15081 interface LoDashExplicitObjectWrapper<T> {
15082 /**
15083 * @see _.assignIn
15084 */
15085 extend<TSource>(
15086 source: TSource
15087 ): LoDashExplicitObjectWrapper<T & TSource>;
15088
15089 /**
15090 * @see _.assignIn
15091 */
15092 extend<TSource1, TSource2>(
15093 source1: TSource1,
15094 source2: TSource2
15095 ): LoDashExplicitObjectWrapper<T & TSource1 & TSource2>;
15096
15097 /**
15098 * @see _.assignIn
15099 */
15100 extend<TSource1, TSource2, TSource3>(
15101 source1: TSource1,
15102 source2: TSource2,
15103 source3: TSource3
15104 ): LoDashExplicitObjectWrapper<T & TSource1 & TSource2 & TSource3>;
15105
15106 /**
15107 * @see _.assignIn
15108 */
15109 extend<TSource1, TSource2, TSource3, TSource4>(
15110 source1: TSource1,
15111 source2: TSource2,
15112 source3: TSource3,
15113 source4: TSource4
15114 ): LoDashExplicitObjectWrapper<T & TSource1 & TSource2 & TSource3 & TSource4>;
15115
15116 /**
15117 * @see _.assignIn
15118 */
15119 extend(): LoDashExplicitObjectWrapper<T>;
15120
15121 /**
15122 * @see _.assignIn
15123 */
15124 extend<TResult>(...otherArgs: any[]): LoDashExplicitObjectWrapper<TResult>;
15125 }
15126
15127 interface LoDashStatic {
15128 /**
15129 * @see _.assignInWith
15130 */
15131 extendWith<TObject, TSource>(
15132 object: TObject,
15133 source: TSource,
15134 customizer: AssignCustomizer
15135 ): TObject & TSource;
15136
15137 /**
15138 * @see _.assignInWith
15139 */
15140 extendWith<TObject, TSource1, TSource2>(
15141 object: TObject,
15142 source1: TSource1,
15143 source2: TSource2,
15144 customizer: AssignCustomizer
15145 ): TObject & TSource1 & TSource2;
15146
15147 /**
15148 * @see _.assignInWith
15149 */
15150 extendWith<TObject, TSource1, TSource2, TSource3>(
15151 object: TObject,
15152 source1: TSource1,
15153 source2: TSource2,
15154 source3: TSource3,
15155 customizer: AssignCustomizer
15156 ): TObject & TSource1 & TSource2 & TSource3;
15157
15158 /**
15159 * @see _.assignInWith
15160 */
15161 extendWith<TObject, TSource1, TSource2, TSource3, TSource4>(
15162 object: TObject,
15163 source1: TSource1,
15164 source2: TSource2,
15165 source3: TSource3,
15166 source4: TSource4,
15167 customizer: AssignCustomizer
15168 ): TObject & TSource1 & TSource2 & TSource3 & TSource4;
15169
15170 /**
15171 * @see _.assignInWith
15172 */
15173 extendWith<TObject>(object: TObject): TObject;
15174
15175 /**
15176 * @see _.assignInWith
15177 */
15178 extendWith<TResult>(
15179 object: any,
15180 ...otherArgs: any[]
15181 ): TResult;
15182 }
15183
15184 interface LoDashImplicitObjectWrapper<T> {
15185 /**
15186 * @see _.assignInWith
15187 */
15188 extendWith<TSource>(
15189 source: TSource,
15190 customizer: AssignCustomizer
15191 ): LoDashImplicitObjectWrapper<T & TSource>;
15192
15193 /**
15194 * @see _.assignInWith
15195 */
15196 extendWith<TSource1, TSource2>(
15197 source1: TSource1,
15198 source2: TSource2,
15199 customizer: AssignCustomizer
15200 ): LoDashImplicitObjectWrapper<T & TSource1 & TSource2>;
15201
15202 /**
15203 * @see _.assignInWith
15204 */
15205 extendWith<TSource1, TSource2, TSource3>(
15206 source1: TSource1,
15207 source2: TSource2,
15208 source3: TSource3,
15209 customizer: AssignCustomizer
15210 ): LoDashImplicitObjectWrapper<T & TSource1 & TSource2 & TSource3>;
15211
15212 /**
15213 * @see _.assignInWith
15214 */
15215 extendWith<TSource1, TSource2, TSource3, TSource4>(
15216 source1: TSource1,
15217 source2: TSource2,
15218 source3: TSource3,
15219 source4: TSource4,
15220 customizer: AssignCustomizer
15221 ): LoDashImplicitObjectWrapper<T & TSource1 & TSource2 & TSource3 & TSource4>;
15222
15223 /**
15224 * @see _.assignInWith
15225 */
15226 extendWith(): LoDashImplicitObjectWrapper<T>;
15227
15228 /**
15229 * @see _.assignInWith
15230 */
15231 extendWith<TResult>(...otherArgs: any[]): LoDashImplicitObjectWrapper<TResult>;
15232 }
15233
15234 interface LoDashExplicitObjectWrapper<T> {
15235 /**
15236 * @see _.assignInWith
15237 */
15238 extendWith<TSource>(
15239 source: TSource,
15240 customizer: AssignCustomizer
15241 ): LoDashExplicitObjectWrapper<T & TSource>;
15242
15243 /**
15244 * @see _.assignInWith
15245 */
15246 extendWith<TSource1, TSource2>(
15247 source1: TSource1,
15248 source2: TSource2,
15249 customizer: AssignCustomizer
15250 ): LoDashExplicitObjectWrapper<T & TSource1 & TSource2>;
15251
15252 /**
15253 * @see _.assignInWith
15254 */
15255 extendWith<TSource1, TSource2, TSource3>(
15256 source1: TSource1,
15257 source2: TSource2,
15258 source3: TSource3,
15259 customizer: AssignCustomizer
15260 ): LoDashExplicitObjectWrapper<T & TSource1 & TSource2 & TSource3>;
15261
15262 /**
15263 * @see _.assignInWith
15264 */
15265 extendWith<TSource1, TSource2, TSource3, TSource4>(
15266 source1: TSource1,
15267 source2: TSource2,
15268 source3: TSource3,
15269 source4: TSource4,
15270 customizer: AssignCustomizer
15271 ): LoDashExplicitObjectWrapper<T & TSource1 & TSource2 & TSource3 & TSource4>;
15272
15273 /**
15274 * @see _.assignInWith
15275 */
15276 extendWith(): LoDashExplicitObjectWrapper<T>;
15277
15278 /**
15279 * @see _.assignInWith
15280 */
15281 extendWith<TResult>(...otherArgs: any[]): LoDashExplicitObjectWrapper<TResult>;
15282 }
15283
15284 //_.findKey
15285 interface LoDashStatic {
15286 /**
15287 * This method is like _.find except that it returns the key of the first element predicate returns truthy for
15288 * instead of the element itself.
15289 *
15290 * If a property name is provided for predicate the created _.property style callback returns the property
15291 * value of the given element.
15292 *
15293 * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for
15294 * elements that have a matching property value, else false.
15295 *
15296 * If an object is provided for predicate the created _.matches style callback returns true for elements that
15297 * have the properties of the given object, else false.
15298 *
15299 * @param object The object to search.
15300 * @param predicate The function invoked per iteration.
15301 * @param thisArg The this binding of predicate.
15302 * @return Returns the key of the matched element, else undefined.
15303 */
15304 findKey<TValues, TObject>(
15305 object: TObject,
15306 predicate?: DictionaryIterator<TValues, boolean>
15307 ): string;
15308
15309 /**
15310 * @see _.findKey
15311 */
15312 findKey<TObject>(
15313 object: TObject,
15314 predicate?: ObjectIterator<any, boolean>
15315 ): string;
15316
15317 /**
15318 * @see _.findKey
15319 */
15320 findKey<TObject>(
15321 object: TObject,
15322 predicate?: string
15323 ): string;
15324
15325 /**
15326 * @see _.findKey
15327 */
15328 findKey<TWhere extends Dictionary<any>, TObject>(
15329 object: TObject,
15330 predicate?: TWhere
15331 ): string;
15332 }
15333
15334 interface LoDashImplicitObjectWrapper<T> {
15335 /**
15336 * @see _.findKey
15337 */
15338 findKey<TValues>(
15339 predicate?: DictionaryIterator<TValues, boolean>
15340 ): string;
15341
15342 /**
15343 * @see _.findKey
15344 */
15345 findKey(
15346 predicate?: ObjectIterator<any, boolean>
15347 ): string;
15348
15349 /**
15350 * @see _.findKey
15351 */
15352 findKey(
15353 predicate?: string
15354 ): string;
15355
15356 /**
15357 * @see _.findKey
15358 */
15359 findKey<TWhere extends Dictionary<any>>(
15360 predicate?: TWhere
15361 ): string;
15362 }
15363
15364 interface LoDashExplicitObjectWrapper<T> {
15365 /**
15366 * @see _.findKey
15367 */
15368 findKey<TValues>(
15369 predicate?: DictionaryIterator<TValues, boolean>
15370 ): LoDashExplicitWrapper<string>;
15371
15372 /**
15373 * @see _.findKey
15374 */
15375 findKey(
15376 predicate?: ObjectIterator<any, boolean>
15377 ): LoDashExplicitWrapper<string>;
15378
15379 /**
15380 * @see _.findKey
15381 */
15382 findKey(
15383 predicate?: string
15384 ): LoDashExplicitWrapper<string>;
15385
15386 /**
15387 * @see _.findKey
15388 */
15389 findKey<TWhere extends Dictionary<any>>(
15390 predicate?: TWhere
15391 ): LoDashExplicitWrapper<string>;
15392 }
15393
15394 //_.findLastKey
15395 interface LoDashStatic {
15396 /**
15397 * This method is like _.findKey except that it iterates over elements of a collection in the opposite order.
15398 *
15399 * If a property name is provided for predicate the created _.property style callback returns the property
15400 * value of the given element.
15401 *
15402 * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for
15403 * elements that have a matching property value, else false.
15404 *
15405 * If an object is provided for predicate the created _.matches style callback returns true for elements that
15406 * have the properties of the given object, else false.
15407 *
15408 * @param object The object to search.
15409 * @param predicate The function invoked per iteration.
15410 * @param thisArg The this binding of predicate.
15411 * @return Returns the key of the matched element, else undefined.
15412 */
15413 findLastKey<TValues, TObject>(
15414 object: TObject,
15415 predicate?: DictionaryIterator<TValues, boolean>
15416 ): string;
15417
15418 /**
15419 * @see _.findLastKey
15420 */
15421 findLastKey<TObject>(
15422 object: TObject,
15423 predicate?: ObjectIterator<any, boolean>
15424 ): string;
15425
15426 /**
15427 * @see _.findLastKey
15428 */
15429 findLastKey<TObject>(
15430 object: TObject,
15431 predicate?: string
15432 ): string;
15433
15434 /**
15435 * @see _.findLastKey
15436 */
15437 findLastKey<TWhere extends Dictionary<any>, TObject>(
15438 object: TObject,
15439 predicate?: TWhere
15440 ): string;
15441 }
15442
15443 interface LoDashImplicitObjectWrapper<T> {
15444 /**
15445 * @see _.findLastKey
15446 */
15447 findLastKey<TValues>(
15448 predicate?: DictionaryIterator<TValues, boolean>
15449 ): string;
15450
15451 /**
15452 * @see _.findLastKey
15453 */
15454 findLastKey(
15455 predicate?: ObjectIterator<any, boolean>
15456 ): string;
15457
15458 /**
15459 * @see _.findLastKey
15460 */
15461 findLastKey(
15462 predicate?: string
15463 ): string;
15464
15465 /**
15466 * @see _.findLastKey
15467 */
15468 findLastKey<TWhere extends Dictionary<any>>(
15469 predicate?: TWhere
15470 ): string;
15471 }
15472
15473 interface LoDashExplicitObjectWrapper<T> {
15474 /**
15475 * @see _.findLastKey
15476 */
15477 findLastKey<TValues>(
15478 predicate?: DictionaryIterator<TValues, boolean>
15479 ): LoDashExplicitWrapper<string>;
15480
15481 /**
15482 * @see _.findLastKey
15483 */
15484 findLastKey(
15485 predicate?: ObjectIterator<any, boolean>
15486 ): LoDashExplicitWrapper<string>;
15487
15488 /**
15489 * @see _.findLastKey
15490 */
15491 findLastKey(
15492 predicate?: string
15493 ): LoDashExplicitWrapper<string>;
15494
15495 /**
15496 * @see _.findLastKey
15497 */
15498 findLastKey<TWhere extends Dictionary<any>>(
15499 predicate?: TWhere
15500 ): LoDashExplicitWrapper<string>;
15501 }
15502
15503 //_.forIn
15504 interface LoDashStatic {
15505 /**
15506 * Iterates over own and inherited enumerable properties of an object invoking iteratee for each property. The
15507 * iteratee is bound to thisArg and invoked with three arguments: (value, key, object). Iteratee functions may
15508 * exit iteration early by explicitly returning false.
15509 *
15510 * @param object The object to iterate over.
15511 * @param iteratee The function invoked per iteration.
15512 * @param thisArg The this binding of iteratee.
15513 * @return Returns object.
15514 */
15515 forIn<T>(
15516 object: Dictionary<T>,
15517 iteratee?: DictionaryIterator<T, any>
15518 ): Dictionary<T>;
15519
15520 /**
15521 * @see _.forIn
15522 */
15523 forIn<T extends {}>(
15524 object: T,
15525 iteratee?: ObjectIterator<any, any>
15526 ): T;
15527 }
15528
15529 interface LoDashImplicitObjectWrapper<T> {
15530 /**
15531 * @see _.forIn
15532 */
15533 forIn<TValue>(
15534 iteratee?: DictionaryIterator<TValue, any>
15535 ): _.LoDashImplicitObjectWrapper<T>;
15536 }
15537
15538 interface LoDashExplicitObjectWrapper<T> {
15539 /**
15540 * @see _.forIn
15541 */
15542 forIn<TValue>(
15543 iteratee?: DictionaryIterator<TValue, any>
15544 ): _.LoDashExplicitObjectWrapper<T>;
15545 }
15546
15547 //_.forInRight
15548 interface LoDashStatic {
15549 /**
15550 * This method is like _.forIn except that it iterates over properties of object in the opposite order.
15551 *
15552 * @param object The object to iterate over.
15553 * @param iteratee The function invoked per iteration.
15554 * @param thisArg The this binding of iteratee.
15555 * @return Returns object.
15556 */
15557 forInRight<T>(
15558 object: Dictionary<T>,
15559 iteratee?: DictionaryIterator<T, any>
15560 ): Dictionary<T>;
15561
15562 /**
15563 * @see _.forInRight
15564 */
15565 forInRight<T extends {}>(
15566 object: T,
15567 iteratee?: ObjectIterator<any, any>
15568 ): T;
15569 }
15570
15571 interface LoDashImplicitObjectWrapper<T> {
15572 /**
15573 * @see _.forInRight
15574 */
15575 forInRight<TValue>(
15576 iteratee?: DictionaryIterator<TValue, any>
15577 ): _.LoDashImplicitObjectWrapper<T>;
15578 }
15579
15580 interface LoDashExplicitObjectWrapper<T> {
15581 /**
15582 * @see _.forInRight
15583 */
15584 forInRight<TValue>(
15585 iteratee?: DictionaryIterator<TValue, any>
15586 ): _.LoDashExplicitObjectWrapper<T>;
15587 }
15588
15589 //_.forOwn
15590 interface LoDashStatic {
15591 /**
15592 * Iterates over own enumerable properties of an object invoking iteratee for each property. The iteratee is
15593 * bound to thisArg and invoked with three arguments: (value, key, object). Iteratee functions may exit
15594 * iteration early by explicitly returning false.
15595 *
15596 * @param object The object to iterate over.
15597 * @param iteratee The function invoked per iteration.
15598 * @param thisArg The this binding of iteratee.
15599 * @return Returns object.
15600 */
15601 forOwn<T>(
15602 object: Dictionary<T>,
15603 iteratee?: DictionaryIterator<T, any>
15604 ): Dictionary<T>;
15605
15606 /**
15607 * @see _.forOwn
15608 */
15609 forOwn<T extends {}>(
15610 object: T,
15611 iteratee?: ObjectIterator<any, any>
15612 ): T;
15613 }
15614
15615 interface LoDashImplicitObjectWrapper<T> {
15616 /**
15617 * @see _.forOwn
15618 */
15619 forOwn<TValue>(
15620 iteratee?: DictionaryIterator<TValue, any>
15621 ): _.LoDashImplicitObjectWrapper<T>;
15622 }
15623
15624 interface LoDashExplicitObjectWrapper<T> {
15625 /**
15626 * @see _.forOwn
15627 */
15628 forOwn<TValue>(
15629 iteratee?: DictionaryIterator<TValue, any>
15630 ): _.LoDashExplicitObjectWrapper<T>;
15631 }
15632
15633 //_.forOwnRight
15634 interface LoDashStatic {
15635 /**
15636 * This method is like _.forOwn except that it iterates over properties of object in the opposite order.
15637 *
15638 * @param object The object to iterate over.
15639 * @param iteratee The function invoked per iteration.
15640 * @param thisArg The this binding of iteratee.
15641 * @return Returns object.
15642 */
15643 forOwnRight<T>(
15644 object: Dictionary<T>,
15645 iteratee?: DictionaryIterator<T, any>
15646 ): Dictionary<T>;
15647
15648 /**
15649 * @see _.forOwnRight
15650 */
15651 forOwnRight<T extends {}>(
15652 object: T,
15653 iteratee?: ObjectIterator<any, any>
15654 ): T;
15655 }
15656
15657 interface LoDashImplicitObjectWrapper<T> {
15658 /**
15659 * @see _.forOwnRight
15660 */
15661 forOwnRight<TValue>(
15662 iteratee?: DictionaryIterator<TValue, any>
15663 ): _.LoDashImplicitObjectWrapper<T>;
15664 }
15665
15666 interface LoDashExplicitObjectWrapper<T> {
15667 /**
15668 * @see _.forOwnRight
15669 */
15670 forOwnRight<TValue>(
15671 iteratee?: DictionaryIterator<TValue, any>
15672 ): _.LoDashExplicitObjectWrapper<T>;
15673 }
15674
15675 //_.functions
15676 interface LoDashStatic {
15677 /**
15678 * Creates an array of function property names from own enumerable properties
15679 * of `object`.
15680 *
15681 * @static
15682 * @memberOf _
15683 * @category Object
15684 * @param {Object} object The object to inspect.
15685 * @returns {Array} Returns the new array of property names.
15686 * @example
15687 *
15688 * function Foo() {
15689 * this.a = _.constant('a');
15690 * this.b = _.constant('b');
15691 * }
15692 *
15693 * Foo.prototype.c = _.constant('c');
15694 *
15695 * _.functions(new Foo);
15696 * // => ['a', 'b']
15697 */
15698 functions<T extends {}>(object: any): string[];
15699 }
15700
15701 interface LoDashImplicitObjectWrapper<T> {
15702 /**
15703 * @see _.functions
15704 */
15705 functions(): _.LoDashImplicitArrayWrapper<string>;
15706 }
15707
15708 interface LoDashExplicitObjectWrapper<T> {
15709 /**
15710 * @see _.functions
15711 */
15712 functions(): _.LoDashExplicitArrayWrapper<string>;
15713 }
15714
15715 //_.functionsIn
15716 interface LoDashStatic {
15717 /**
15718 * Creates an array of function property names from own and inherited
15719 * enumerable properties of `object`.
15720 *
15721 * @static
15722 * @memberOf _
15723 * @category Object
15724 * @param {Object} object The object to inspect.
15725 * @returns {Array} Returns the new array of property names.
15726 * @example
15727 *
15728 * function Foo() {
15729 * this.a = _.constant('a');
15730 * this.b = _.constant('b');
15731 * }
15732 *
15733 * Foo.prototype.c = _.constant('c');
15734 *
15735 * _.functionsIn(new Foo);
15736 * // => ['a', 'b', 'c']
15737 */
15738 functionsIn<T extends {}>(object: any): string[];
15739 }
15740
15741 interface LoDashImplicitObjectWrapper<T> {
15742 /**
15743 * @see _.functionsIn
15744 */
15745 functionsIn(): _.LoDashImplicitArrayWrapper<string>;
15746 }
15747
15748 interface LoDashExplicitObjectWrapper<T> {
15749 /**
15750 * @see _.functionsIn
15751 */
15752 functionsIn(): _.LoDashExplicitArrayWrapper<string>;
15753 }
15754
15755 //_.get
15756 interface LoDashStatic {
15757 /**
15758 * Gets the property value at path of object. If the resolved value is undefined the defaultValue is used
15759 * in its place.
15760 *
15761 * @param object The object to query.
15762 * @param path The path of the property to get.
15763 * @param defaultValue The value returned if the resolved value is undefined.
15764 * @return Returns the resolved value.
15765 */
15766 get<TObject, TResult>(
15767 object: TObject,
15768 path: Many<StringRepresentable>,
15769 defaultValue?: TResult
15770 ): TResult;
15771
15772 /**
15773 * @see _.get
15774 */
15775 get<TResult>(
15776 object: any,
15777 path: Many<StringRepresentable>,
15778 defaultValue?: TResult
15779 ): TResult;
15780 }
15781
15782 interface LoDashImplicitWrapper<T> {
15783 /**
15784 * @see _.get
15785 */
15786 get<TResult>(
15787 path: Many<StringRepresentable>,
15788 defaultValue?: TResult
15789 ): TResult;
15790 }
15791
15792 interface LoDashImplicitArrayWrapper<T> {
15793 /**
15794 * @see _.get
15795 */
15796 get<TResult>(
15797 path: Many<StringRepresentable>,
15798 defaultValue?: TResult
15799 ): TResult;
15800 }
15801
15802 interface LoDashImplicitObjectWrapper<T> {
15803 /**
15804 * @see _.get
15805 */
15806 get<TResult>(
15807 path: Many<StringRepresentable>,
15808 defaultValue?: TResult
15809 ): TResult;
15810 }
15811
15812 interface LoDashExplicitWrapper<T> {
15813 /**
15814 * @see _.get
15815 */
15816 get<TResultWrapper>(
15817 path: Many<StringRepresentable>,
15818 defaultValue?: any
15819 ): TResultWrapper;
15820 }
15821
15822 interface LoDashExplicitArrayWrapper<T> {
15823 /**
15824 * @see _.get
15825 */
15826 get<TResultWrapper>(
15827 path: Many<StringRepresentable>,
15828 defaultValue?: any
15829 ): TResultWrapper;
15830 }
15831
15832 interface LoDashExplicitObjectWrapper<T> {
15833 /**
15834 * @see _.get
15835 */
15836 get<TResultWrapper>(
15837 path: Many<StringRepresentable>,
15838 defaultValue?: any
15839 ): TResultWrapper;
15840 }
15841
15842 //_.has
15843 interface LoDashStatic {
15844 /**
15845 * Checks if `path` is a direct property of `object`.
15846 *
15847 * @static
15848 * @memberOf _
15849 * @category Object
15850 * @param {Object} object The object to query.
15851 * @param {Array|string} path The path to check.
15852 * @returns {boolean} Returns `true` if `path` exists, else `false`.
15853 * @example
15854 *
15855 * var object = { 'a': { 'b': { 'c': 3 } } };
15856 * var other = _.create({ 'a': _.create({ 'b': _.create({ 'c': 3 }) }) });
15857 *
15858 * _.has(object, 'a');
15859 * // => true
15860 *
15861 * _.has(object, 'a.b.c');
15862 * // => true
15863 *
15864 * _.has(object, ['a', 'b', 'c']);
15865 * // => true
15866 *
15867 * _.has(other, 'a');
15868 * // => false
15869 */
15870 has<T extends {}>(
15871 object: T,
15872 path: Many<StringRepresentable>
15873 ): boolean;
15874 }
15875
15876 interface LoDashImplicitObjectWrapper<T> {
15877 /**
15878 * @see _.has
15879 */
15880 has(path: Many<StringRepresentable>): boolean;
15881 }
15882
15883 interface LoDashExplicitObjectWrapper<T> {
15884 /**
15885 * @see _.has
15886 */
15887 has(path: Many<StringRepresentable>): LoDashExplicitWrapper<boolean>;
15888 }
15889
15890 //_.hasIn
15891 interface LoDashStatic {
15892 /**
15893 * Checks if `path` is a direct or inherited property of `object`.
15894 *
15895 * @static
15896 * @memberOf _
15897 * @category Object
15898 * @param {Object} object The object to query.
15899 * @param {Array|string} path The path to check.
15900 * @returns {boolean} Returns `true` if `path` exists, else `false`.
15901 * @example
15902 *
15903 * var object = _.create({ 'a': _.create({ 'b': _.create({ 'c': 3 }) }) });
15904 *
15905 * _.hasIn(object, 'a');
15906 * // => true
15907 *
15908 * _.hasIn(object, 'a.b.c');
15909 * // => true
15910 *
15911 * _.hasIn(object, ['a', 'b', 'c']);
15912 * // => true
15913 *
15914 * _.hasIn(object, 'b');
15915 * // => false
15916 */
15917 hasIn<T extends {}>(
15918 object: T,
15919 path: Many<StringRepresentable>
15920 ): boolean;
15921 }
15922
15923 interface LoDashImplicitObjectWrapper<T> {
15924 /**
15925 * @see _.hasIn
15926 */
15927 hasIn(path: Many<StringRepresentable>): boolean;
15928 }
15929
15930 interface LoDashExplicitObjectWrapper<T> {
15931 /**
15932 * @see _.hasIn
15933 */
15934 hasIn(path: Many<StringRepresentable>): LoDashExplicitWrapper<boolean>;
15935 }
15936
15937 //_.invert
15938 interface LoDashStatic {
15939 /**
15940 * Creates an object composed of the inverted keys and values of object. If object contains duplicate values,
15941 * subsequent values overwrite property assignments of previous values unless multiValue is true.
15942 *
15943 * @param object The object to invert.
15944 * @param multiValue Allow multiple values per key.
15945 * @return Returns the new inverted object.
15946 */
15947 invert<T extends {}, TResult extends {}>(
15948 object: T,
15949 multiValue?: boolean
15950 ): TResult;
15951
15952 /**
15953 * @see _.invert
15954 */
15955 invert<TResult extends {}>(
15956 object: Object,
15957 multiValue?: boolean
15958 ): TResult;
15959 }
15960
15961 interface LoDashImplicitObjectWrapper<T> {
15962 /**
15963 * @see _.invert
15964 */
15965 invert<TResult extends {}>(multiValue?: boolean): LoDashImplicitObjectWrapper<TResult>;
15966 }
15967
15968 interface LoDashExplicitObjectWrapper<T> {
15969 /**
15970 * @see _.invert
15971 */
15972 invert<TResult extends {}>(multiValue?: boolean): LoDashExplicitObjectWrapper<TResult>;
15973 }
15974
15975 //_.inverBy
15976 type InvertByIterator<T> = (value: T) => any;
15977
15978 interface LoDashStatic {
15979 /**
15980 * This method is like _.invert except that the inverted object is generated from the results of running each
15981 * element of object through iteratee. The corresponding inverted value of each inverted key is an array of
15982 * keys responsible for generating the inverted value. The iteratee is invoked with one argument: (value).
15983 *
15984 * @param object The object to invert.
15985 * @param interatee The iteratee invoked per element.
15986 * @return Returns the new inverted object.
15987 */
15988 invertBy(
15989 object: Object,
15990 interatee?: InvertByIterator<any>|string
15991 ): Dictionary<string[]>;
15992
15993 /**
15994 * @see _.invertBy
15995 */
15996 invertBy<T>(
15997 object: _.Dictionary<T>|_.NumericDictionary<T>,
15998 interatee?: InvertByIterator<T>|string
15999 ): Dictionary<string[]>;
16000
16001 /**
16002 * @see _.invertBy
16003 */
16004 invertBy<W>(
16005 object: Object,
16006 interatee?: W
16007 ): Dictionary<string[]>;
16008
16009 /**
16010 * @see _.invertBy
16011 */
16012 invertBy<T, W>(
16013 object: _.Dictionary<T>,
16014 interatee?: W
16015 ): Dictionary<string[]>;
16016 }
16017
16018 interface LoDashImplicitWrapper<T> {
16019 /**
16020 * @see _.invertBy
16021 */
16022 invertBy(
16023 interatee?: InvertByIterator<any>
16024 ): LoDashImplicitObjectWrapper<Dictionary<string[]>>;
16025 }
16026
16027 interface LoDashImplicitArrayWrapper<T> {
16028 /**
16029 * @see _.invertBy
16030 */
16031 invertBy(
16032 interatee?: InvertByIterator<T>|string
16033 ): LoDashImplicitObjectWrapper<Dictionary<string[]>>;
16034
16035 /**
16036 * @see _.invertBy
16037 */
16038 invertBy<W>(
16039 interatee?: W
16040 ): LoDashImplicitObjectWrapper<Dictionary<string[]>>;
16041 }
16042
16043 interface LoDashImplicitObjectWrapper<T> {
16044 /**
16045 * @see _.invertBy
16046 */
16047 invertBy(
16048 interatee?: InvertByIterator<any>|string
16049 ): LoDashImplicitObjectWrapper<Dictionary<string[]>>;
16050
16051 /**
16052 * @see _.invertBy
16053 */
16054 invertBy<W>(
16055 interatee?: W
16056 ): LoDashImplicitObjectWrapper<Dictionary<string[]>>;
16057 }
16058
16059 interface LoDashExplicitWrapper<T> {
16060 /**
16061 * @see _.invertBy
16062 */
16063 invertBy(
16064 interatee?: InvertByIterator<any>
16065 ): LoDashExplicitObjectWrapper<Dictionary<string[]>>;
16066 }
16067
16068 interface LoDashExplicitArrayWrapper<T> {
16069 /**
16070 * @see _.invertBy
16071 */
16072 invertBy(
16073 interatee?: InvertByIterator<T>|string
16074 ): LoDashExplicitObjectWrapper<Dictionary<string[]>>;
16075
16076 /**
16077 * @see _.invertBy
16078 */
16079 invertBy<W>(
16080 interatee?: W
16081 ): LoDashExplicitObjectWrapper<Dictionary<string[]>>;
16082 }
16083
16084 interface LoDashExplicitObjectWrapper<T> {
16085 /**
16086 * @see _.invertBy
16087 */
16088 invertBy(
16089 interatee?: InvertByIterator<any>|string
16090 ): LoDashExplicitObjectWrapper<Dictionary<string[]>>;
16091
16092 /**
16093 * @see _.invertBy
16094 */
16095 invertBy<W>(
16096 interatee?: W
16097 ): LoDashExplicitObjectWrapper<Dictionary<string[]>>;
16098 }
16099
16100 //_.keys
16101 interface LoDashStatic {
16102 /**
16103 * Creates an array of the own enumerable property names of object.
16104 *
16105 * Note: Non-object values are coerced to objects. See the ES spec for more details.
16106 *
16107 * @param object The object to query.
16108 * @return Returns the array of property names.
16109 */
16110 keys(object?: any): string[];
16111 }
16112
16113 interface LoDashImplicitObjectWrapper<T> {
16114 /**
16115 * @see _.keys
16116 */
16117 keys(): LoDashImplicitArrayWrapper<string>;
16118 }
16119
16120 interface LoDashExplicitObjectWrapper<T> {
16121 /**
16122 * @see _.keys
16123 */
16124 keys(): LoDashExplicitArrayWrapper<string>;
16125 }
16126
16127 //_.keysIn
16128 interface LoDashStatic {
16129 /**
16130 * Creates an array of the own and inherited enumerable property names of object.
16131 *
16132 * Note: Non-object values are coerced to objects.
16133 *
16134 * @param object The object to query.
16135 * @return An array of property names.
16136 */
16137 keysIn(object?: any): string[];
16138 }
16139
16140 interface LoDashImplicitObjectWrapper<T> {
16141 /**
16142 * @see _.keysIn
16143 */
16144 keysIn(): LoDashImplicitArrayWrapper<string>;
16145 }
16146
16147 interface LoDashExplicitObjectWrapper<T> {
16148 /**
16149 * @see _.keysIn
16150 */
16151 keysIn(): LoDashExplicitArrayWrapper<string>;
16152 }
16153
16154 //_.mapKeys
16155 interface LoDashStatic {
16156 /**
16157 * The opposite of _.mapValues; this method creates an object with the same values as object and keys generated
16158 * by running each own enumerable property of object through iteratee.
16159 *
16160 * @param object The object to iterate over.
16161 * @param iteratee The function invoked per iteration.
16162 * @param thisArg The this binding of iteratee.
16163 * @return Returns the new mapped object.
16164 */
16165 mapKeys<T, TKey>(
16166 object: List<T>,
16167 iteratee?: ListIterator<T, TKey>
16168 ): Dictionary<T>;
16169
16170 /**
16171 * @see _.mapKeys
16172 */
16173 mapKeys<T, TKey>(
16174 object: Dictionary<T>,
16175 iteratee?: DictionaryIterator<T, TKey>
16176 ): Dictionary<T>;
16177
16178 /**
16179 * @see _.mapKeys
16180 */
16181 mapKeys<T, TObject extends {}>(
16182 object: List<T>|Dictionary<T>,
16183 iteratee?: TObject
16184 ): Dictionary<T>;
16185
16186 /**
16187 * @see _.mapKeys
16188 */
16189 mapKeys<T>(
16190 object: List<T>|Dictionary<T>,
16191 iteratee?: string
16192 ): Dictionary<T>;
16193 }
16194
16195 interface LoDashImplicitArrayWrapper<T> {
16196 /**
16197 * @see _.mapKeys
16198 */
16199 mapKeys<TKey>(
16200 iteratee?: ListIterator<T, TKey>
16201 ): LoDashImplicitObjectWrapper<Dictionary<T>>;
16202
16203 /**
16204 * @see _.mapKeys
16205 */
16206 mapKeys<TObject extends {}>(
16207 iteratee?: TObject
16208 ): LoDashImplicitObjectWrapper<Dictionary<T>>;
16209
16210 /**
16211 * @see _.mapKeys
16212 */
16213 mapKeys(
16214 iteratee?: string
16215 ): LoDashImplicitObjectWrapper<Dictionary<T>>;
16216 }
16217
16218 interface LoDashImplicitObjectWrapper<T> {
16219 /**
16220 * @see _.mapKeys
16221 */
16222 mapKeys<TResult, TKey>(
16223 iteratee?: ListIterator<TResult, TKey>|DictionaryIterator<TResult, TKey>
16224 ): LoDashImplicitObjectWrapper<Dictionary<TResult>>;
16225
16226 /**
16227 * @see _.mapKeys
16228 */
16229 mapKeys<TResult, TObject extends {}>(
16230 iteratee?: TObject
16231 ): LoDashImplicitObjectWrapper<Dictionary<TResult>>;
16232
16233 /**
16234 * @see _.mapKeys
16235 */
16236 mapKeys<TResult>(
16237 iteratee?: string
16238 ): LoDashImplicitObjectWrapper<Dictionary<TResult>>;
16239 }
16240
16241 interface LoDashExplicitArrayWrapper<T> {
16242 /**
16243 * @see _.mapKeys
16244 */
16245 mapKeys<TKey>(
16246 iteratee?: ListIterator<T, TKey>
16247 ): LoDashExplicitObjectWrapper<Dictionary<T>>;
16248
16249 /**
16250 * @see _.mapKeys
16251 */
16252 mapKeys<TObject extends {}>(
16253 iteratee?: TObject
16254 ): LoDashExplicitObjectWrapper<Dictionary<T>>;
16255
16256 /**
16257 * @see _.mapKeys
16258 */
16259 mapKeys(
16260 iteratee?: string
16261 ): LoDashExplicitObjectWrapper<Dictionary<T>>;
16262 }
16263
16264 interface LoDashExplicitObjectWrapper<T> {
16265 /**
16266 * @see _.mapKeys
16267 */
16268 mapKeys<TResult, TKey>(
16269 iteratee?: ListIterator<TResult, TKey>|DictionaryIterator<TResult, TKey>
16270 ): LoDashExplicitObjectWrapper<Dictionary<TResult>>;
16271
16272 /**
16273 * @see _.mapKeys
16274 */
16275 mapKeys<TResult, TObject extends {}>(
16276 iteratee?: TObject
16277 ): LoDashExplicitObjectWrapper<Dictionary<TResult>>;
16278
16279 /**
16280 * @see _.mapKeys
16281 */
16282 mapKeys<TResult>(
16283 iteratee?: string
16284 ): LoDashExplicitObjectWrapper<Dictionary<TResult>>;
16285 }
16286
16287 //_.mapValues
16288 interface LoDashStatic {
16289 /**
16290 * Creates an object with the same keys as object and values generated by running each own
16291 * enumerable property of object through iteratee. The iteratee function is bound to thisArg
16292 * and invoked with three arguments: (value, key, object).
16293 *
16294 * If a property name is provided iteratee the created "_.property" style callback returns
16295 * the property value of the given element.
16296 *
16297 * If a value is also provided for thisArg the creted "_.matchesProperty" style callback returns
16298 * true for elements that have a matching property value, else false;.
16299 *
16300 * If an object is provided for iteratee the created "_.matches" style callback returns true
16301 * for elements that have the properties of the given object, else false.
16302 *
16303 * @param {Object} object The object to iterate over.
16304 * @param {Function|Object|string} [iteratee=_.identity] The function invoked per iteration.
16305 * @param {Object} [thisArg] The `this` binding of `iteratee`.
16306 * @return {Object} Returns the new mapped object.
16307 */
16308 mapValues<T, TResult>(obj: Dictionary<T>, callback: ObjectIterator<T, TResult>): Dictionary<TResult>;
16309 mapValues<T>(obj: Dictionary<T>, where: Dictionary<T>): Dictionary<boolean>;
16310 mapValues<T, TMapped>(obj: T, pluck: string): TMapped;
16311 mapValues<T>(obj: T, callback: ObjectIterator<any, any>): T;
16312 }
16313
16314 interface LoDashImplicitObjectWrapper<T> {
16315 /**
16316 * @see _.mapValues
16317 * TValue is the type of the property values of T.
16318 * TResult is the type output by the ObjectIterator function
16319 */
16320 mapValues<TValue, TResult>(callback: ObjectIterator<TValue, TResult>): LoDashImplicitObjectWrapper<Dictionary<TResult>>;
16321
16322 /**
16323 * @see _.mapValues
16324 * TResult is the type of the property specified by pluck.
16325 * T should be a Dictionary<Dictionary<TResult>>
16326 */
16327 mapValues<TResult>(pluck: string): LoDashImplicitObjectWrapper<Dictionary<TResult>>;
16328
16329 /**
16330 * @see _.mapValues
16331 * TResult is the type of the properties of each object in the values of T
16332 * T should be a Dictionary<Dictionary<TResult>>
16333 */
16334 mapValues<TResult>(where: Dictionary<TResult>): LoDashImplicitArrayWrapper<boolean>;
16335 }
16336
16337 interface LoDashExplicitObjectWrapper<T> {
16338 /**
16339 * @see _.mapValues
16340 * TValue is the type of the property values of T.
16341 * TResult is the type output by the ObjectIterator function
16342 */
16343 mapValues<TValue, TResult>(callback: ObjectIterator<TValue, TResult>): LoDashExplicitObjectWrapper<Dictionary<TResult>>;
16344
16345 /**
16346 * @see _.mapValues
16347 * TResult is the type of the property specified by pluck.
16348 * T should be a Dictionary<Dictionary<TResult>>
16349 */
16350 mapValues<TResult>(pluck: string): LoDashExplicitObjectWrapper<Dictionary<TResult>>;
16351
16352 /**
16353 * @see _.mapValues
16354 * TResult is the type of the properties of each object in the values of T
16355 * T should be a Dictionary<Dictionary<TResult>>
16356 */
16357 mapValues<TResult>(where: Dictionary<TResult>): LoDashExplicitObjectWrapper<boolean>;
16358 }
16359
16360 //_.merge
16361 interface LoDashStatic {
16362 /**
16363 * Recursively merges own and inherited enumerable properties of source
16364 * objects into the destination object, skipping source properties that resolve
16365 * to `undefined`. Array and plain object properties are merged recursively.
16366 * Other objects and value types are overridden by assignment. Source objects
16367 * are applied from left to right. Subsequent sources overwrite property
16368 * assignments of previous sources.
16369 *
16370 * **Note:** This method mutates `object`.
16371 *
16372 * @static
16373 * @memberOf _
16374 * @category Object
16375 * @param {Object} object The destination object.
16376 * @param {...Object} [sources] The source objects.
16377 * @returns {Object} Returns `object`.
16378 * @example
16379 *
16380 * var users = {
16381 * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]
16382 * };
16383 *
16384 * var ages = {
16385 * 'data': [{ 'age': 36 }, { 'age': 40 }]
16386 * };
16387 *
16388 * _.merge(users, ages);
16389 * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }
16390 */
16391 merge<TObject, TSource>(
16392 object: TObject,
16393 source: TSource
16394 ): TObject & TSource;
16395
16396 /**
16397 * @see _.merge
16398 */
16399 merge<TObject, TSource1, TSource2>(
16400 object: TObject,
16401 source1: TSource1,
16402 source2: TSource2
16403 ): TObject & TSource1 & TSource2;
16404
16405 /**
16406 * @see _.merge
16407 */
16408 merge<TObject, TSource1, TSource2, TSource3>(
16409 object: TObject,
16410 source1: TSource1,
16411 source2: TSource2,
16412 source3: TSource3
16413 ): TObject & TSource1 & TSource2 & TSource3;
16414
16415 /**
16416 * @see _.merge
16417 */
16418 merge<TObject, TSource1, TSource2, TSource3, TSource4>(
16419 object: TObject,
16420 source1: TSource1,
16421 source2: TSource2,
16422 source3: TSource3,
16423 source4: TSource4
16424 ): TObject & TSource1 & TSource2 & TSource3 & TSource4;
16425
16426 /**
16427 * @see _.merge
16428 */
16429 merge<TResult>(
16430 object: any,
16431 ...otherArgs: any[]
16432 ): TResult;
16433 }
16434
16435 interface LoDashImplicitObjectWrapper<T> {
16436 /**
16437 * @see _.merge
16438 */
16439 merge<TSource>(
16440 source: TSource
16441 ): LoDashImplicitObjectWrapper<T & TSource>;
16442
16443 /**
16444 * @see _.merge
16445 */
16446 merge<TSource1, TSource2>(
16447 source1: TSource1,
16448 source2: TSource2
16449 ): LoDashImplicitObjectWrapper<T & TSource1 & TSource2>;
16450
16451 /**
16452 * @see _.merge
16453 */
16454 merge<TSource1, TSource2, TSource3>(
16455 source1: TSource1,
16456 source2: TSource2,
16457 source3: TSource3
16458 ): LoDashImplicitObjectWrapper<T & TSource1 & TSource2 & TSource3>;
16459
16460 /**
16461 * @see _.merge
16462 */
16463 merge<TSource1, TSource2, TSource3, TSource4>(
16464 source1: TSource1,
16465 source2: TSource2,
16466 source3: TSource3,
16467 source4: TSource4
16468 ): LoDashImplicitObjectWrapper<T & TSource1 & TSource2 & TSource3 & TSource4>;
16469
16470 /**
16471 * @see _.merge
16472 */
16473 merge<TResult>(
16474 ...otherArgs: any[]
16475 ): LoDashImplicitObjectWrapper<TResult>;
16476 }
16477
16478 interface LoDashExplicitObjectWrapper<T> {
16479 /**
16480 * @see _.merge
16481 */
16482 merge<TSource>(
16483 source: TSource
16484 ): LoDashExplicitObjectWrapper<T & TSource>;
16485
16486 /**
16487 * @see _.merge
16488 */
16489 merge<TSource1, TSource2>(
16490 source1: TSource1,
16491 source2: TSource2
16492 ): LoDashExplicitObjectWrapper<T & TSource1 & TSource2>;
16493
16494 /**
16495 * @see _.merge
16496 */
16497 merge<TSource1, TSource2, TSource3>(
16498 source1: TSource1,
16499 source2: TSource2,
16500 source3: TSource3
16501 ): LoDashExplicitObjectWrapper<T & TSource1 & TSource2 & TSource3>;
16502
16503 /**
16504 * @see _.merge
16505 */
16506 merge<TSource1, TSource2, TSource3, TSource4>(
16507 ): LoDashExplicitObjectWrapper<T & TSource1 & TSource2 & TSource3 & TSource4>;
16508
16509 /**
16510 * @see _.merge
16511 */
16512 merge<TResult>(
16513 ...otherArgs: any[]
16514 ): LoDashExplicitObjectWrapper<TResult>;
16515 }
16516
16517 //_.mergeWith
16518 type MergeWithCustomizer = (value: any, srcValue: any, key?: string, object?: Object, source?: Object) => any;
16519
16520 interface LoDashStatic {
16521 /**
16522 * This method is like `_.merge` except that it accepts `customizer` which
16523 * is invoked to produce the merged values of the destination and source
16524 * properties. If `customizer` returns `undefined` merging is handled by the
16525 * method instead. The `customizer` is invoked with seven arguments:
16526 * (objValue, srcValue, key, object, source, stack).
16527 *
16528 * @static
16529 * @memberOf _
16530 * @category Object
16531 * @param {Object} object The destination object.
16532 * @param {...Object} sources The source objects.
16533 * @param {Function} customizer The function to customize assigned values.
16534 * @returns {Object} Returns `object`.
16535 * @example
16536 *
16537 * function customizer(objValue, srcValue) {
16538 * if (_.isArray(objValue)) {
16539 * return objValue.concat(srcValue);
16540 * }
16541 * }
16542 *
16543 * var object = {
16544 * 'fruits': ['apple'],
16545 * 'vegetables': ['beet']
16546 * };
16547 *
16548 * var other = {
16549 * 'fruits': ['banana'],
16550 * 'vegetables': ['carrot']
16551 * };
16552 *
16553 * _.merge(object, other, customizer);
16554 * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }
16555 */
16556 mergeWith<TObject, TSource>(
16557 object: TObject,
16558 source: TSource,
16559 customizer: MergeWithCustomizer
16560 ): TObject & TSource;
16561
16562 /**
16563 * @see _.mergeWith
16564 */
16565 mergeWith<TObject, TSource1, TSource2>(
16566 object: TObject,
16567 source1: TSource1,
16568 source2: TSource2,
16569 customizer: MergeWithCustomizer
16570 ): TObject & TSource1 & TSource2;
16571
16572 /**
16573 * @see _.mergeWith
16574 */
16575 mergeWith<TObject, TSource1, TSource2, TSource3>(
16576 object: TObject,
16577 source1: TSource1,
16578 source2: TSource2,
16579 source3: TSource3,
16580 customizer: MergeWithCustomizer
16581 ): TObject & TSource1 & TSource2 & TSource3;
16582
16583 /**
16584 * @see _.mergeWith
16585 */
16586 mergeWith<TObject, TSource1, TSource2, TSource3, TSource4>(
16587 object: TObject,
16588 source1: TSource1,
16589 source2: TSource2,
16590 source3: TSource3,
16591 source4: TSource4,
16592 customizer: MergeWithCustomizer
16593 ): TObject & TSource1 & TSource2 & TSource3 & TSource4;
16594
16595 /**
16596 * @see _.mergeWith
16597 */
16598 mergeWith<TResult>(
16599 object: any,
16600 ...otherArgs: any[]
16601 ): TResult;
16602 }
16603
16604 interface LoDashImplicitObjectWrapper<T> {
16605 /**
16606 * @see _.mergeWith
16607 */
16608 mergeWith<TSource>(
16609 source: TSource,
16610 customizer: MergeWithCustomizer
16611 ): LoDashImplicitObjectWrapper<T & TSource>;
16612
16613 /**
16614 * @see _.mergeWith
16615 */
16616 mergeWith<TSource1, TSource2>(
16617 source1: TSource1,
16618 source2: TSource2,
16619 customizer: MergeWithCustomizer
16620 ): LoDashImplicitObjectWrapper<T & TSource1 & TSource2>;
16621
16622 /**
16623 * @see _.mergeWith
16624 */
16625 mergeWith<TSource1, TSource2, TSource3>(
16626 source1: TSource1,
16627 source2: TSource2,
16628 source3: TSource3,
16629 customizer: MergeWithCustomizer
16630 ): LoDashImplicitObjectWrapper<T & TSource1 & TSource2 & TSource3>;
16631
16632 /**
16633 * @see _.mergeWith
16634 */
16635 mergeWith<TSource1, TSource2, TSource3, TSource4>(
16636 source1: TSource1,
16637 source2: TSource2,
16638 source3: TSource3,
16639 source4: TSource4,
16640 customizer: MergeWithCustomizer
16641 ): LoDashImplicitObjectWrapper<T & TSource1 & TSource2 & TSource3 & TSource4>;
16642
16643 /**
16644 * @see _.mergeWith
16645 */
16646 mergeWith<TResult>(
16647 ...otherArgs: any[]
16648 ): LoDashImplicitObjectWrapper<TResult>;
16649 }
16650
16651 //_.omit
16652 interface LoDashStatic {
16653 /**
16654 * The opposite of `_.pick`; this method creates an object composed of the
16655 * own and inherited enumerable properties of `object` that are not omitted.
16656 *
16657 * @static
16658 * @memberOf _
16659 * @category Object
16660 * @param {Object} object The source object.
16661 * @param {...(string|string[])} [props] The property names to omit, specified
16662 * individually or in arrays..
16663 * @returns {Object} Returns the new object.
16664 * @example
16665 *
16666 * var object = { 'a': 1, 'b': '2', 'c': 3 };
16667 *
16668 * _.omit(object, ['a', 'c']);
16669 * // => { 'b': '2' }
16670 */
16671
16672 omit<TResult extends {}, T extends {}>(
16673 object: T,
16674 ...predicate: Array<Many<StringRepresentable>>
16675 ): TResult;
16676 }
16677
16678 interface LoDashImplicitObjectWrapper<T> {
16679 /**
16680 * @see _.omit
16681 */
16682 omit<TResult extends {}>(
16683 ...predicate: Array<Many<StringRepresentable>>
16684 ): LoDashImplicitObjectWrapper<TResult>;
16685 }
16686
16687 interface LoDashExplicitObjectWrapper<T> {
16688 /**
16689 * @see _.omit
16690 */
16691 omit<TResult extends {}>(
16692 ...predicate: Array<Many<StringRepresentable>>
16693 ): LoDashExplicitObjectWrapper<TResult>;
16694 }
16695
16696 //_.omitBy
16697 interface LoDashStatic {
16698 /**
16699 * The opposite of `_.pickBy`; this method creates an object composed of the
16700 * own and inherited enumerable properties of `object` that `predicate`
16701 * doesn't return truthy for.
16702 *
16703 * @static
16704 * @memberOf _
16705 * @category Object
16706 * @param {Object} object The source object.
16707 * @param {Function|Object|string} [predicate=_.identity] The function invoked per property.
16708 * @returns {Object} Returns the new object.
16709 * @example
16710 *
16711 * var object = { 'a': 1, 'b': '2', 'c': 3 };
16712 *
16713 * _.omitBy(object, _.isNumber);
16714 * // => { 'b': '2' }
16715 */
16716 omitBy<TResult extends {}, T extends {}>(
16717 object: T,
16718 predicate: ObjectIterator<any, boolean>
16719 ): TResult;
16720 }
16721
16722 interface LoDashImplicitObjectWrapper<T> {
16723 /**
16724 * @see _.omitBy
16725 */
16726 omitBy<TResult extends {}>(
16727 predicate: ObjectIterator<any, boolean>
16728 ): LoDashImplicitObjectWrapper<TResult>;
16729 }
16730
16731 interface LoDashExplicitObjectWrapper<T> {
16732 /**
16733 * @see _.omitBy
16734 */
16735 omitBy<TResult extends {}>(
16736 predicate: ObjectIterator<any, boolean>
16737 ): LoDashExplicitObjectWrapper<TResult>;
16738 }
16739
16740 //_.pick
16741 interface LoDashStatic {
16742 /**
16743 * Creates an object composed of the picked `object` properties.
16744 *
16745 * @static
16746 * @memberOf _
16747 * @category Object
16748 * @param {Object} object The source object.
16749 * @param {...(string|string[])} [props] The property names to pick, specified
16750 * individually or in arrays.
16751 * @returns {Object} Returns the new object.
16752 * @example
16753 *
16754 * var object = { 'a': 1, 'b': '2', 'c': 3 };
16755 *
16756 * _.pick(object, ['a', 'c']);
16757 * // => { 'a': 1, 'c': 3 }
16758 */
16759 pick<TResult extends {}, T extends {}>(
16760 object: T,
16761 ...predicate: Array<Many<StringRepresentable>>
16762 ): TResult;
16763 }
16764
16765 interface LoDashImplicitObjectWrapper<T> {
16766 /**
16767 * @see _.pick
16768 */
16769 pick<TResult extends {}>(
16770 ...predicate: Array<Many<StringRepresentable>>
16771 ): LoDashImplicitObjectWrapper<TResult>;
16772 }
16773
16774 interface LoDashExplicitObjectWrapper<T> {
16775 /**
16776 * @see _.pick
16777 */
16778 pick<TResult extends {}>(
16779 ...predicate: Array<Many<StringRepresentable>>
16780 ): LoDashExplicitObjectWrapper<TResult>;
16781 }
16782
16783 //_.pickBy
16784 interface LoDashStatic {
16785 /**
16786 * Creates an object composed of the `object` properties `predicate` returns
16787 * truthy for. The predicate is invoked with one argument: (value).
16788 *
16789 * @static
16790 * @memberOf _
16791 * @category Object
16792 * @param {Object} object The source object.
16793 * @param {Function|Object|string} [predicate=_.identity] The function invoked per property.
16794 * @returns {Object} Returns the new object.
16795 * @example
16796 *
16797 * var object = { 'a': 1, 'b': '2', 'c': 3 };
16798 *
16799 * _.pickBy(object, _.isNumber);
16800 * // => { 'a': 1, 'c': 3 }
16801 */
16802 pickBy<TResult extends {}, T extends {}>(
16803 object: T,
16804 predicate?: ObjectIterator<any, boolean>
16805 ): TResult;
16806 }
16807
16808 interface LoDashImplicitObjectWrapper<T> {
16809 /**
16810 * @see _.pickBy
16811 */
16812 pickBy<TResult extends {}>(
16813 predicate?: ObjectIterator<any, boolean>
16814 ): LoDashImplicitObjectWrapper<TResult>;
16815 }
16816
16817 interface LoDashExplicitObjectWrapper<T> {
16818 /**
16819 * @see _.pickBy
16820 */
16821 pickBy<TResult extends {}>(
16822 predicate?: ObjectIterator<any, boolean>
16823 ): LoDashExplicitObjectWrapper<TResult>;
16824 }
16825
16826 //_.result
16827 interface LoDashStatic {
16828 /**
16829 * This method is like _.get except that if the resolved value is a function it’s invoked with the this binding
16830 * of its parent object and its result is returned.
16831 *
16832 * @param object The object to query.
16833 * @param path The path of the property to resolve.
16834 * @param defaultValue The value returned if the resolved value is undefined.
16835 * @return Returns the resolved value.
16836 */
16837 result<TObject, TResult>(
16838 object: TObject,
16839 path: Many<StringRepresentable>,
16840 defaultValue?: TResult|((...args: any[]) => TResult)
16841 ): TResult;
16842
16843 /**
16844 * @see _.result
16845 */
16846 result<TResult>(
16847 object: any,
16848 path: Many<StringRepresentable>,
16849 defaultValue?: TResult|((...args: any[]) => TResult)
16850 ): TResult;
16851 }
16852
16853 interface LoDashImplicitWrapper<T> {
16854 /**
16855 * @see _.result
16856 */
16857 result<TResult>(
16858 path: Many<StringRepresentable>,
16859 defaultValue?: TResult|((...args: any[]) => TResult)
16860 ): TResult;
16861 }
16862
16863 interface LoDashImplicitArrayWrapper<T> {
16864 /**
16865 * @see _.result
16866 */
16867 result<TResult>(
16868 path: Many<StringRepresentable>,
16869 defaultValue?: TResult|((...args: any[]) => TResult)
16870 ): TResult;
16871 }
16872
16873 interface LoDashImplicitObjectWrapper<T> {
16874 /**
16875 * @see _.result
16876 */
16877 result<TResult>(
16878 path: Many<StringRepresentable>,
16879 defaultValue?: TResult|((...args: any[]) => TResult)
16880 ): TResult;
16881 }
16882
16883 interface LoDashExplicitWrapper<T> {
16884 /**
16885 * @see _.result
16886 */
16887 result<TResultWrapper>(
16888 path: Many<StringRepresentable>,
16889 defaultValue?: any
16890 ): TResultWrapper;
16891 }
16892
16893 interface LoDashExplicitArrayWrapper<T> {
16894 /**
16895 * @see _.result
16896 */
16897 result<TResultWrapper>(
16898 path: Many<StringRepresentable>,
16899 defaultValue?: any
16900 ): TResultWrapper;
16901 }
16902
16903 interface LoDashExplicitObjectWrapper<T> {
16904 /**
16905 * @see _.result
16906 */
16907 result<TResultWrapper>(
16908 path: Many<StringRepresentable>,
16909 defaultValue?: any
16910 ): TResultWrapper;
16911 }
16912
16913 //_.set
16914 interface LoDashStatic {
16915 /**
16916 * Sets the value at path of object. If a portion of path doesn’t exist it’s created. Arrays are created for
16917 * missing index properties while objects are created for all other missing properties. Use _.setWith to
16918 * customize path creation.
16919 *
16920 * @param object The object to modify.
16921 * @param path The path of the property to set.
16922 * @param value The value to set.
16923 * @return Returns object.
16924 */
16925 set<TResult>(
16926 object: Object,
16927 path: Many<StringRepresentable>,
16928 value: any
16929 ): TResult;
16930
16931 /**
16932 * @see _.set
16933 */
16934 set<V, TResult>(
16935 object: Object,
16936 path: Many<StringRepresentable>,
16937 value: V
16938 ): TResult;
16939
16940 /**
16941 * @see _.set
16942 */
16943 set<O, V, TResult>(
16944 object: O,
16945 path: Many<StringRepresentable>,
16946 value: V
16947 ): TResult;
16948 }
16949
16950 interface LoDashImplicitObjectWrapper<T> {
16951 /**
16952 * @see _.set
16953 */
16954 set<TResult>(
16955 path: Many<StringRepresentable>,
16956 value: any
16957 ): LoDashImplicitObjectWrapper<TResult>;
16958
16959 /**
16960 * @see _.set
16961 */
16962 set<V, TResult>(
16963 path: Many<StringRepresentable>,
16964 value: V
16965 ): LoDashImplicitObjectWrapper<TResult>;
16966 }
16967
16968 interface LoDashExplicitObjectWrapper<T> {
16969 /**
16970 * @see _.set
16971 */
16972 set<TResult>(
16973 path: Many<StringRepresentable>,
16974 value: any
16975 ): LoDashExplicitObjectWrapper<TResult>;
16976
16977 /**
16978 * @see _.set
16979 */
16980 set<V, TResult>(
16981 path: Many<StringRepresentable>,
16982 value: V
16983 ): LoDashExplicitObjectWrapper<TResult>;
16984 }
16985
16986 //_.setWith
16987 type SetWithCustomizer<T> = (nsValue: any, key: string, nsObject: T) => any;
16988
16989 interface LoDashStatic {
16990 /**
16991 * This method is like _.set except that it accepts customizer which is invoked to produce the objects of
16992 * path. If customizer returns undefined path creation is handled by the method instead. The customizer is
16993 * invoked with three arguments: (nsValue, key, nsObject).
16994 *
16995 * @param object The object to modify.
16996 * @param path The path of the property to set.
16997 * @param value The value to set.
16998 * @parem customizer The function to customize assigned values.
16999 * @return Returns object.
17000 */
17001 setWith<TResult>(
17002 object: Object,
17003 path: Many<StringRepresentable>,
17004 value: any,
17005 customizer?: SetWithCustomizer<Object>
17006 ): TResult;
17007
17008 /**
17009 * @see _.setWith
17010 */
17011 setWith<V, TResult>(
17012 object: Object,
17013 path: Many<StringRepresentable>,
17014 value: V,
17015 customizer?: SetWithCustomizer<Object>
17016 ): TResult;
17017
17018 /**
17019 * @see _.setWith
17020 */
17021 setWith<O, V, TResult>(
17022 object: O,
17023 path: Many<StringRepresentable>,
17024 value: V,
17025 customizer?: SetWithCustomizer<O>
17026 ): TResult;
17027 }
17028
17029 interface LoDashImplicitObjectWrapper<T> {
17030 /**
17031 * @see _.setWith
17032 */
17033 setWith<TResult>(
17034 path: Many<StringRepresentable>,
17035 value: any,
17036 customizer?: SetWithCustomizer<T>
17037 ): LoDashImplicitObjectWrapper<TResult>;
17038
17039 /**
17040 * @see _.setWith
17041 */
17042 setWith<V, TResult>(
17043 path: Many<StringRepresentable>,
17044 value: V,
17045 customizer?: SetWithCustomizer<T>
17046 ): LoDashImplicitObjectWrapper<TResult>;
17047 }
17048
17049 interface LoDashExplicitObjectWrapper<T> {
17050 /**
17051 * @see _.setWith
17052 */
17053 setWith<TResult>(
17054 path: Many<StringRepresentable>,
17055 value: any,
17056 customizer?: SetWithCustomizer<T>
17057 ): LoDashExplicitObjectWrapper<TResult>;
17058
17059 /**
17060 * @see _.setWith
17061 */
17062 setWith<V, TResult>(
17063 path: Many<StringRepresentable>,
17064 value: V,
17065 customizer?: SetWithCustomizer<T>
17066 ): LoDashExplicitObjectWrapper<TResult>;
17067 }
17068
17069 //_.toPairs
17070 interface LoDashStatic {
17071 /**
17072 * Creates an array of own enumerable key-value pairs for object.
17073 *
17074 * @param object The object to query.
17075 * @return Returns the new array of key-value pairs.
17076 */
17077 toPairs<T extends {}>(object?: T): [string, any][];
17078
17079 toPairs<T extends {}, TResult>(object?: T): [string, TResult][];
17080 }
17081
17082 interface LoDashImplicitObjectWrapper<T> {
17083 /**
17084 * @see _.toPairs
17085 */
17086 toPairs<TResult>(): LoDashImplicitArrayWrapper<[string, TResult]>;
17087 }
17088
17089 interface LoDashExplicitObjectWrapper<T> {
17090 /**
17091 * @see _.toPairs
17092 */
17093 toPairs<TResult>(): LoDashExplicitArrayWrapper<[string, TResult]>;
17094 }
17095
17096 //_.toPairsIn
17097 interface LoDashStatic {
17098 /**
17099 * Creates an array of own and inherited enumerable key-value pairs for object.
17100 *
17101 * @param object The object to query.
17102 * @return Returns the new array of key-value pairs.
17103 */
17104 toPairsIn<T extends {}>(object?: T): [string, any][];
17105
17106 toPairsIn<T extends {}, TResult>(object?: T): [string, TResult][];
17107 }
17108
17109 interface LoDashImplicitObjectWrapper<T> {
17110 /**
17111 * @see _.toPairsIn
17112 */
17113 toPairsIn<TResult>(): LoDashImplicitArrayWrapper<[string, TResult]>;
17114 }
17115
17116 interface LoDashExplicitObjectWrapper<T> {
17117 /**
17118 * @see _.toPairsIn
17119 */
17120 toPairsIn<TResult>(): LoDashExplicitArrayWrapper<[string, TResult]>;
17121 }
17122
17123 //_.transform
17124 interface LoDashStatic {
17125 /**
17126 * An alternative to _.reduce; this method transforms object to a new accumulator object which is the result of
17127 * running each of its own enumerable properties through iteratee, with each invocation potentially mutating
17128 * the accumulator object. The iteratee is bound to thisArg and invoked with four arguments: (accumulator,
17129 * value, key, object). Iteratee functions may exit iteration early by explicitly returning false.
17130 *
17131 * @param object The object to iterate over.
17132 * @param iteratee The function invoked per iteration.
17133 * @param accumulator The custom accumulator value.
17134 * @param thisArg The this binding of iteratee.
17135 * @return Returns the accumulated value.
17136 */
17137 transform<T, TResult>(
17138 object: T[],
17139 iteratee?: MemoVoidArrayIterator<T, TResult[]>,
17140 accumulator?: TResult[]
17141 ): TResult[];
17142
17143 /**
17144 * @see _.transform
17145 */
17146 transform<T, TResult>(
17147 object: T[],
17148 iteratee?: MemoVoidArrayIterator<T, Dictionary<TResult>>,
17149 accumulator?: Dictionary<TResult>
17150 ): Dictionary<TResult>;
17151
17152 /**
17153 * @see _.transform
17154 */
17155 transform<T, TResult>(
17156 object: Dictionary<T>,
17157 iteratee?: MemoVoidDictionaryIterator<T, Dictionary<TResult>>,
17158 accumulator?: Dictionary<TResult>
17159 ): Dictionary<TResult>;
17160
17161 /**
17162 * @see _.transform
17163 */
17164 transform<T, TResult>(
17165 object: Dictionary<T>,
17166 iteratee?: MemoVoidDictionaryIterator<T, TResult[]>,
17167 accumulator?: TResult[]
17168 ): TResult[];
17169 }
17170
17171 interface LoDashImplicitArrayWrapper<T> {
17172 /**
17173 * @see _.transform
17174 */
17175 transform<TResult>(
17176 iteratee?: MemoVoidArrayIterator<T, TResult[]>,
17177 accumulator?: TResult[]
17178 ): LoDashImplicitArrayWrapper<TResult>;
17179
17180 /**
17181 * @see _.transform
17182 */
17183 transform<TResult>(
17184 iteratee?: MemoVoidArrayIterator<T, Dictionary<TResult>>,
17185 accumulator?: Dictionary<TResult>
17186 ): LoDashImplicitObjectWrapper<Dictionary<TResult>>;
17187 }
17188
17189 interface LoDashImplicitObjectWrapper<T> {
17190 /**
17191 * @see _.transform
17192 */
17193 transform<T, TResult>(
17194 iteratee?: MemoVoidDictionaryIterator<T, Dictionary<TResult>>,
17195 accumulator?: Dictionary<TResult>
17196 ): LoDashImplicitObjectWrapper<Dictionary<TResult>>;
17197
17198 /**
17199 * @see _.transform
17200 */
17201 transform<T, TResult>(
17202 iteratee?: MemoVoidDictionaryIterator<T, TResult[]>,
17203 accumulator?: TResult[]
17204 ): LoDashImplicitArrayWrapper<TResult>;
17205 }
17206
17207 //_.unset
17208 interface LoDashStatic {
17209 /**
17210 * Removes the property at path of object.
17211 *
17212 * Note: This method mutates object.
17213 *
17214 * @param object The object to modify.
17215 * @param path The path of the property to unset.
17216 * @return Returns true if the property is deleted, else false.
17217 */
17218 unset<T>(
17219 object: T,
17220 path: Many<StringRepresentable>
17221 ): boolean;
17222 }
17223
17224 interface LoDashImplicitObjectWrapper<T> {
17225 /**
17226 * @see _.unset
17227 */
17228 unset(path: Many<StringRepresentable>): LoDashImplicitWrapper<boolean>;
17229 }
17230
17231 interface LoDashExplicitObjectWrapper<T> {
17232 /**
17233 * @see _.unset
17234 */
17235 unset(path: Many<StringRepresentable>): LoDashExplicitWrapper<boolean>;
17236 }
17237
17238 //_.update
17239 interface LoDashStatic {
17240 /**
17241 * This method is like _.set except that accepts updater to produce the value to set. Use _.updateWith to
17242 * customize path creation. The updater is invoked with one argument: (value).
17243 *
17244 * @param object The object to modify.
17245 * @param path The path of the property to set.
17246 * @param updater The function to produce the updated value.
17247 * @return Returns object.
17248 */
17249 update<TResult>(
17250 object: Object,
17251 path: Many<StringRepresentable>,
17252 updater: Function
17253 ): TResult;
17254
17255 /**
17256 * @see _.update
17257 */
17258 update<U extends Function, TResult>(
17259 object: Object,
17260 path: Many<StringRepresentable>,
17261 updater: U
17262 ): TResult;
17263
17264 /**
17265 * @see _.update
17266 */
17267 update<O extends {}, TResult>(
17268 object: O,
17269 path: Many<StringRepresentable>,
17270 updater: Function
17271 ): TResult;
17272
17273 /**
17274 * @see _.update
17275 */
17276 update<O, U extends Function, TResult>(
17277 object: O,
17278 path: Many<StringRepresentable>,
17279 updater: U
17280 ): TResult;
17281 }
17282
17283 interface LoDashImplicitObjectWrapper<T> {
17284 /**
17285 * @see _.update
17286 */
17287 update<TResult>(
17288 path: Many<StringRepresentable>,
17289 updater: any
17290 ): LoDashImplicitObjectWrapper<TResult>;
17291
17292 /**
17293 * @see _.update
17294 */
17295 update<U extends Function, TResult>(
17296 path: Many<StringRepresentable>,
17297 updater: U
17298 ): LoDashImplicitObjectWrapper<TResult>;
17299 }
17300
17301 interface LoDashExplicitObjectWrapper<T> {
17302 /**
17303 * @see _.update
17304 */
17305 update<TResult>(
17306 path: Many<StringRepresentable>,
17307 updater: any
17308 ): LoDashExplicitObjectWrapper<TResult>;
17309
17310 /**
17311 * @see _.update
17312 */
17313 update<U extends Function, TResult>(
17314 path: Many<StringRepresentable>,
17315 updater: U
17316 ): LoDashExplicitObjectWrapper<TResult>;
17317 }
17318
17319 //_.values
17320 interface LoDashStatic {
17321 /**
17322 * Creates an array of the own enumerable property values of object.
17323 *
17324 * @param object The object to query.
17325 * @return Returns an array of property values.
17326 */
17327 values<T>(object?: Dictionary<T>|NumericDictionary<T>|List<T>): T[];
17328
17329 /**
17330 * @see _.values
17331 */
17332 values<T>(object?: any): T[];
17333 }
17334
17335 interface LoDashImplicitStringWrapper {
17336 /**
17337 * @see _.values
17338 */
17339 values(): LoDashImplicitArrayWrapper<string>;
17340 }
17341
17342 interface LoDashImplicitWrapper<T> {
17343 /**
17344 * @see _.values
17345 */
17346 values(): LoDashImplicitArrayWrapper<any>;
17347 }
17348
17349 interface LoDashImplicitArrayWrapper<T> {
17350 /**
17351 * @see _.values
17352 */
17353 values(): LoDashImplicitArrayWrapper<T>;
17354 }
17355
17356 interface LoDashImplicitObjectWrapper<T> {
17357 /**
17358 * @see _.values
17359 */
17360 values<T>(): LoDashImplicitArrayWrapper<T>;
17361 }
17362
17363 interface LoDashExplicitWrapper<T> {
17364 /**
17365 * @see _.values
17366 */
17367 values<T>(): LoDashExplicitArrayWrapper<T>;
17368 }
17369
17370 interface LoDashExplicitArrayWrapper<T> {
17371 /**
17372 * @see _.values
17373 */
17374 values(): LoDashExplicitArrayWrapper<T>;
17375 }
17376
17377 interface LoDashExplicitObjectWrapper<T> {
17378 /**
17379 * @see _.values
17380 */
17381 values<T>(): LoDashExplicitArrayWrapper<T>;
17382 }
17383
17384 //_.valuesIn
17385 interface LoDashStatic {
17386 /**
17387 * Creates an array of the own and inherited enumerable property values of object.
17388 *
17389 * @param object The object to query.
17390 * @return Returns the array of property values.
17391 */
17392 valuesIn<T>(object?: Dictionary<T>): T[];
17393
17394 /**
17395 * @see _.valuesIn
17396 */
17397 valuesIn<T>(object?: any): T[];
17398 }
17399
17400 interface LoDashImplicitObjectWrapper<T> {
17401 /**
17402 * @see _.valuesIn
17403 */
17404 valuesIn<T>(): LoDashImplicitArrayWrapper<T>;
17405 }
17406
17407 interface LoDashExplicitObjectWrapper<T> {
17408 /**
17409 * @see _.valuesIn
17410 */
17411 valuesIn<T>(): LoDashExplicitArrayWrapper<T>;
17412 }
17413
17414 /**********
17415 * String *
17416 **********/
17417
17418 //_.camelCase
17419 interface LoDashStatic {
17420 /**
17421 * Converts string to camel case.
17422 *
17423 * @param string The string to convert.
17424 * @return Returns the camel cased string.
17425 */
17426 camelCase(string?: string): string;
17427 }
17428
17429 interface LoDashImplicitWrapper<T> {
17430 /**
17431 * @see _.camelCase
17432 */
17433 camelCase(): string;
17434 }
17435
17436 interface LoDashExplicitWrapper<T> {
17437 /**
17438 * @see _.camelCase
17439 */
17440 camelCase(): LoDashExplicitWrapper<string>;
17441 }
17442
17443 //_.capitalize
17444 interface LoDashStatic {
17445 /**
17446 * Converts the first character of string to upper case and the remaining to lower case.
17447 *
17448 * @param string The string to capitalize.
17449 * @return Returns the capitalized string.
17450 */
17451 capitalize(string?: string): string;
17452 }
17453
17454 interface LoDashImplicitWrapper<T> {
17455 /**
17456 * @see _.capitalize
17457 */
17458 capitalize(): string;
17459 }
17460
17461 interface LoDashExplicitWrapper<T> {
17462 /**
17463 * @see _.capitalize
17464 */
17465 capitalize(): LoDashExplicitWrapper<string>;
17466 }
17467
17468 //_.deburr
17469 interface LoDashStatic {
17470 /**
17471 * Deburrs string by converting latin-1 supplementary letters to basic latin letters and removing combining
17472 * diacritical marks.
17473 *
17474 * @param string The string to deburr.
17475 * @return Returns the deburred string.
17476 */
17477 deburr(string?: string): string;
17478 }
17479
17480 interface LoDashImplicitWrapper<T> {
17481 /**
17482 * @see _.deburr
17483 */
17484 deburr(): string;
17485 }
17486
17487 interface LoDashExplicitWrapper<T> {
17488 /**
17489 * @see _.deburr
17490 */
17491 deburr(): LoDashExplicitWrapper<string>;
17492 }
17493
17494 //_.endsWith
17495 interface LoDashStatic {
17496 /**
17497 * Checks if string ends with the given target string.
17498 *
17499 * @param string The string to search.
17500 * @param target The string to search for.
17501 * @param position The position to search from.
17502 * @return Returns true if string ends with target, else false.
17503 */
17504 endsWith(
17505 string?: string,
17506 target?: string,
17507 position?: number
17508 ): boolean;
17509 }
17510
17511 interface LoDashImplicitWrapper<T> {
17512 /**
17513 * @see _.endsWith
17514 */
17515 endsWith(
17516 target?: string,
17517 position?: number
17518 ): boolean;
17519 }
17520
17521 interface LoDashExplicitWrapper<T> {
17522 /**
17523 * @see _.endsWith
17524 */
17525 endsWith(
17526 target?: string,
17527 position?: number
17528 ): LoDashExplicitWrapper<boolean>;
17529 }
17530
17531 // _.escape
17532 interface LoDashStatic {
17533 /**
17534 * Converts the characters "&", "<", ">", '"', "'", and "`" in string to their corresponding HTML entities.
17535 *
17536 * Note: No other characters are escaped. To escape additional characters use a third-party library like he.
17537 *
17538 * hough the ">" character is escaped for symmetry, characters like ">" and "/" don’t need escaping in HTML
17539 * and have no special meaning unless they're part of a tag or unquoted attribute value. See Mathias Bynens’s
17540 * article (under "semi-related fun fact") for more details.
17541 *
17542 * Backticks are escaped because in IE < 9, they can break out of attribute values or HTML comments. See #59,
17543 * #102, #108, and #133 of the HTML5 Security Cheatsheet for more details.
17544 *
17545 * When working with HTML you should always quote attribute values to reduce XSS vectors.
17546 *
17547 * @param string The string to escape.
17548 * @return Returns the escaped string.
17549 */
17550 escape(string?: string): string;
17551 }
17552
17553 interface LoDashImplicitWrapper<T> {
17554 /**
17555 * @see _.escape
17556 */
17557 escape(): string;
17558 }
17559
17560 interface LoDashExplicitWrapper<T> {
17561 /**
17562 * @see _.escape
17563 */
17564 escape(): LoDashExplicitWrapper<string>;
17565 }
17566
17567 // _.escapeRegExp
17568 interface LoDashStatic {
17569 /**
17570 * Escapes the RegExp special characters "^", "$", "\", ".", "*", "+", "?", "(", ")", "[", "]",
17571 * "{", "}", and "|" in string.
17572 *
17573 * @param string The string to escape.
17574 * @return Returns the escaped string.
17575 */
17576 escapeRegExp(string?: string): string;
17577 }
17578
17579 interface LoDashImplicitWrapper<T> {
17580 /**
17581 * @see _.escapeRegExp
17582 */
17583 escapeRegExp(): string;
17584 }
17585
17586 interface LoDashExplicitWrapper<T> {
17587 /**
17588 * @see _.escapeRegExp
17589 */
17590 escapeRegExp(): LoDashExplicitWrapper<string>;
17591 }
17592
17593 //_.kebabCase
17594 interface LoDashStatic {
17595 /**
17596 * Converts string to kebab case.
17597 *
17598 * @param string The string to convert.
17599 * @return Returns the kebab cased string.
17600 */
17601 kebabCase(string?: string): string;
17602 }
17603
17604 interface LoDashImplicitWrapper<T> {
17605 /**
17606 * @see _.kebabCase
17607 */
17608 kebabCase(): string;
17609 }
17610
17611 interface LoDashExplicitWrapper<T> {
17612 /**
17613 * @see _.kebabCase
17614 */
17615 kebabCase(): LoDashExplicitWrapper<string>;
17616 }
17617
17618 //_.lowerCase
17619 interface LoDashStatic {
17620 /**
17621 * Converts `string`, as space separated words, to lower case.
17622 *
17623 * @param string The string to convert.
17624 * @return Returns the lower cased string.
17625 */
17626 lowerCase(string?: string): string;
17627 }
17628
17629 interface LoDashImplicitWrapper<T> {
17630 /**
17631 * @see _.lowerCase
17632 */
17633 lowerCase(): string;
17634 }
17635
17636 interface LoDashExplicitWrapper<T> {
17637 /**
17638 * @see _.lowerCase
17639 */
17640 lowerCase(): LoDashExplicitWrapper<string>;
17641 }
17642
17643 //_.lowerFirst
17644 interface LoDashStatic {
17645 /**
17646 * Converts the first character of `string` to lower case.
17647 *
17648 * @param string The string to convert.
17649 * @return Returns the converted string.
17650 */
17651 lowerFirst(string?: string): string;
17652 }
17653
17654 interface LoDashImplicitWrapper<T> {
17655 /**
17656 * @see _.lowerFirst
17657 */
17658 lowerFirst(): string;
17659 }
17660
17661 interface LoDashExplicitWrapper<T> {
17662 /**
17663 * @see _.lowerFirst
17664 */
17665 lowerFirst(): LoDashExplicitWrapper<string>;
17666 }
17667
17668 //_.pad
17669 interface LoDashStatic {
17670 /**
17671 * Pads string on the left and right sides if it’s shorter than length. Padding characters are truncated if
17672 * they can’t be evenly divided by length.
17673 *
17674 * @param string The string to pad.
17675 * @param length The padding length.
17676 * @param chars The string used as padding.
17677 * @return Returns the padded string.
17678 */
17679 pad(
17680 string?: string,
17681 length?: number,
17682 chars?: string
17683 ): string;
17684 }
17685
17686 interface LoDashImplicitWrapper<T> {
17687 /**
17688 * @see _.pad
17689 */
17690 pad(
17691 length?: number,
17692 chars?: string
17693 ): string;
17694 }
17695
17696 interface LoDashExplicitWrapper<T> {
17697 /**
17698 * @see _.pad
17699 */
17700 pad(
17701 length?: number,
17702 chars?: string
17703 ): LoDashExplicitWrapper<string>;
17704 }
17705
17706 //_.padEnd
17707 interface LoDashStatic {
17708 /**
17709 * Pads string on the right side if it’s shorter than length. Padding characters are truncated if they exceed
17710 * length.
17711 *
17712 * @param string The string to pad.
17713 * @param length The padding length.
17714 * @param chars The string used as padding.
17715 * @return Returns the padded string.
17716 */
17717 padEnd(
17718 string?: string,
17719 length?: number,
17720 chars?: string
17721 ): string;
17722 }
17723
17724 interface LoDashImplicitWrapper<T> {
17725 /**
17726 * @see _.padEnd
17727 */
17728 padEnd(
17729 length?: number,
17730 chars?: string
17731 ): string;
17732 }
17733
17734 interface LoDashExplicitWrapper<T> {
17735 /**
17736 * @see _.padEnd
17737 */
17738 padEnd(
17739 length?: number,
17740 chars?: string
17741 ): LoDashExplicitWrapper<string>;
17742 }
17743
17744 //_.padStart
17745 interface LoDashStatic {
17746 /**
17747 * Pads string on the left side if it’s shorter than length. Padding characters are truncated if they exceed
17748 * length.
17749 *
17750 * @param string The string to pad.
17751 * @param length The padding length.
17752 * @param chars The string used as padding.
17753 * @return Returns the padded string.
17754 */
17755 padStart(
17756 string?: string,
17757 length?: number,
17758 chars?: string
17759 ): string;
17760 }
17761
17762 interface LoDashImplicitWrapper<T> {
17763 /**
17764 * @see _.padStart
17765 */
17766 padStart(
17767 length?: number,
17768 chars?: string
17769 ): string;
17770 }
17771
17772 interface LoDashExplicitWrapper<T> {
17773 /**
17774 * @see _.padStart
17775 */
17776 padStart(
17777 length?: number,
17778 chars?: string
17779 ): LoDashExplicitWrapper<string>;
17780 }
17781
17782 //_.parseInt
17783 interface LoDashStatic {
17784 /**
17785 * Converts string to an integer of the specified radix. If radix is undefined or 0, a radix of 10 is used
17786 * unless value is a hexadecimal, in which case a radix of 16 is used.
17787 *
17788 * Note: This method aligns with the ES5 implementation of parseInt.
17789 *
17790 * @param string The string to convert.
17791 * @param radix The radix to interpret value by.
17792 * @return Returns the converted integer.
17793 */
17794 parseInt(
17795 string: string,
17796 radix?: number
17797 ): number;
17798 }
17799
17800 interface LoDashImplicitWrapper<T> {
17801 /**
17802 * @see _.parseInt
17803 */
17804 parseInt(radix?: number): number;
17805 }
17806
17807 interface LoDashExplicitWrapper<T> {
17808 /**
17809 * @see _.parseInt
17810 */
17811 parseInt(radix?: number): LoDashExplicitWrapper<number>;
17812 }
17813
17814 //_.repeat
17815 interface LoDashStatic {
17816 /**
17817 * Repeats the given string n times.
17818 *
17819 * @param string The string to repeat.
17820 * @param n The number of times to repeat the string.
17821 * @return Returns the repeated string.
17822 */
17823 repeat(
17824 string?: string,
17825 n?: number
17826 ): string;
17827 }
17828
17829 interface LoDashImplicitWrapper<T> {
17830 /**
17831 * @see _.repeat
17832 */
17833 repeat(n?: number): string;
17834 }
17835
17836 interface LoDashExplicitWrapper<T> {
17837 /**
17838 * @see _.repeat
17839 */
17840 repeat(n?: number): LoDashExplicitWrapper<string>;
17841 }
17842
17843 //_.replace
17844 interface LoDashStatic {
17845 /**
17846 * Replaces matches for pattern in string with replacement.
17847 *
17848 * Note: This method is based on String#replace.
17849 *
17850 * @param string
17851 * @param pattern
17852 * @param replacement
17853 * @return Returns the modified string.
17854 */
17855 replace(
17856 string: string,
17857 pattern: RegExp|string,
17858 replacement: Function|string
17859 ): string;
17860
17861 /**
17862 * @see _.replace
17863 */
17864 replace(
17865 pattern?: RegExp|string,
17866 replacement?: Function|string
17867 ): string;
17868 }
17869
17870 interface LoDashImplicitWrapper<T> {
17871 /**
17872 * @see _.replace
17873 */
17874 replace(
17875 pattern?: RegExp|string,
17876 replacement?: Function|string
17877 ): string;
17878
17879 /**
17880 * @see _.replace
17881 */
17882 replace(
17883 replacement?: Function|string
17884 ): string;
17885 }
17886
17887 interface LoDashImplicitObjectWrapper<T> {
17888 /**
17889 * @see _.replace
17890 */
17891 replace(
17892 pattern?: RegExp|string,
17893 replacement?: Function|string
17894 ): string;
17895
17896 /**
17897 * @see _.replace
17898 */
17899 replace(
17900 replacement?: Function|string
17901 ): string;
17902 }
17903
17904 interface LoDashExplicitWrapper<T> {
17905 /**
17906 * @see _.replace
17907 */
17908 replace(
17909 pattern?: RegExp|string,
17910 replacement?: Function|string
17911 ): LoDashExplicitWrapper<string>;
17912
17913 /**
17914 * @see _.replace
17915 */
17916 replace(
17917 replacement?: Function|string
17918 ): LoDashExplicitWrapper<string>;
17919 }
17920
17921 interface LoDashExplicitObjectWrapper<T> {
17922 /**
17923 * @see _.replace
17924 */
17925 replace(
17926 pattern?: RegExp|string,
17927 replacement?: Function|string
17928 ): LoDashExplicitWrapper<string>;
17929
17930 /**
17931 * @see _.replace
17932 */
17933 replace(
17934 replacement?: Function|string
17935 ): LoDashExplicitWrapper<string>;
17936 }
17937
17938 //_.snakeCase
17939 interface LoDashStatic {
17940 /**
17941 * Converts string to snake case.
17942 *
17943 * @param string The string to convert.
17944 * @return Returns the snake cased string.
17945 */
17946 snakeCase(string?: string): string;
17947 }
17948
17949 interface LoDashImplicitWrapper<T> {
17950 /**
17951 * @see _.snakeCase
17952 */
17953 snakeCase(): string;
17954 }
17955
17956 interface LoDashExplicitWrapper<T> {
17957 /**
17958 * @see _.snakeCase
17959 */
17960 snakeCase(): LoDashExplicitWrapper<string>;
17961 }
17962
17963 //_.split
17964 interface LoDashStatic {
17965 /**
17966 * Splits string by separator.
17967 *
17968 * Note: This method is based on String#split.
17969 *
17970 * @param string
17971 * @param separator
17972 * @param limit
17973 * @return Returns the new array of string segments.
17974 */
17975 split(
17976 string: string,
17977 separator?: RegExp|string,
17978 limit?: number
17979 ): string[];
17980 }
17981
17982 interface LoDashImplicitWrapper<T> {
17983 /**
17984 * @see _.split
17985 */
17986 split(
17987 separator?: RegExp|string,
17988 limit?: number
17989 ): LoDashImplicitArrayWrapper<string>;
17990 }
17991
17992 interface LoDashExplicitWrapper<T> {
17993 /**
17994 * @see _.split
17995 */
17996 split(
17997 separator?: RegExp|string,
17998 limit?: number
17999 ): LoDashExplicitArrayWrapper<string>;
18000 }
18001
18002 //_.startCase
18003 interface LoDashStatic {
18004 /**
18005 * Converts string to start case.
18006 *
18007 * @param string The string to convert.
18008 * @return Returns the start cased string.
18009 */
18010 startCase(string?: string): string;
18011 }
18012
18013 interface LoDashImplicitWrapper<T> {
18014 /**
18015 * @see _.startCase
18016 */
18017 startCase(): string;
18018 }
18019
18020 interface LoDashExplicitWrapper<T> {
18021 /**
18022 * @see _.startCase
18023 */
18024 startCase(): LoDashExplicitWrapper<string>;
18025 }
18026
18027 //_.startsWith
18028 interface LoDashStatic {
18029 /**
18030 * Checks if string starts with the given target string.
18031 *
18032 * @param string The string to search.
18033 * @param target The string to search for.
18034 * @param position The position to search from.
18035 * @return Returns true if string starts with target, else false.
18036 */
18037 startsWith(
18038 string?: string,
18039 target?: string,
18040 position?: number
18041 ): boolean;
18042 }
18043
18044 interface LoDashImplicitWrapper<T> {
18045 /**
18046 * @see _.startsWith
18047 */
18048 startsWith(
18049 target?: string,
18050 position?: number
18051 ): boolean;
18052 }
18053
18054 interface LoDashExplicitWrapper<T> {
18055 /**
18056 * @see _.startsWith
18057 */
18058 startsWith(
18059 target?: string,
18060 position?: number
18061 ): LoDashExplicitWrapper<boolean>;
18062 }
18063
18064 //_.template
18065 interface TemplateOptions extends TemplateSettings {
18066 /**
18067 * The sourceURL of the template's compiled source.
18068 */
18069 sourceURL?: string;
18070 }
18071
18072 interface TemplateExecutor {
18073 (data?: Object): string;
18074 source: string;
18075 }
18076
18077 interface LoDashStatic {
18078 /**
18079 * Creates a compiled template function that can interpolate data properties in "interpolate" delimiters,
18080 * HTML-escape interpolated data properties in "escape" delimiters, and execute JavaScript in "evaluate"
18081 * delimiters. Data properties may be accessed as free variables in the template. If a setting object is
18082 * provided it takes precedence over _.templateSettings values.
18083 *
18084 * Note: In the development build _.template utilizes
18085 * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl) for easier
18086 * debugging.
18087 *
18088 * For more information on precompiling templates see
18089 * [lodash's custom builds documentation](https://lodash.com/custom-builds).
18090 *
18091 * For more information on Chrome extension sandboxes see
18092 * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).
18093 *
18094 * @param string The template string.
18095 * @param options The options object.
18096 * @param options.escape The HTML "escape" delimiter.
18097 * @param options.evaluate The "evaluate" delimiter.
18098 * @param options.imports An object to import into the template as free variables.
18099 * @param options.interpolate The "interpolate" delimiter.
18100 * @param options.sourceURL The sourceURL of the template's compiled source.
18101 * @param options.variable The data object variable name.
18102 * @return Returns the compiled template function.
18103 */
18104 template(
18105 string: string,
18106 options?: TemplateOptions
18107 ): TemplateExecutor;
18108 }
18109
18110 interface LoDashImplicitWrapper<T> {
18111 /**
18112 * @see _.template
18113 */
18114 template(options?: TemplateOptions): TemplateExecutor;
18115 }
18116
18117 interface LoDashExplicitWrapper<T> {
18118 /**
18119 * @see _.template
18120 */
18121 template(options?: TemplateOptions): LoDashExplicitObjectWrapper<TemplateExecutor>;
18122 }
18123
18124 //_.toLower
18125 interface LoDashStatic {
18126 /**
18127 * Converts `string`, as a whole, to lower case.
18128 *
18129 * @param string The string to convert.
18130 * @return Returns the lower cased string.
18131 */
18132 toLower(string?: string): string;
18133 }
18134
18135 interface LoDashImplicitWrapper<T> {
18136 /**
18137 * @see _.toLower
18138 */
18139 toLower(): string;
18140 }
18141
18142 interface LoDashExplicitWrapper<T> {
18143 /**
18144 * @see _.toLower
18145 */
18146 toLower(): LoDashExplicitWrapper<string>;
18147 }
18148
18149 //_.toUpper
18150 interface LoDashStatic {
18151 /**
18152 * Converts `string`, as a whole, to upper case.
18153 *
18154 * @param string The string to convert.
18155 * @return Returns the upper cased string.
18156 */
18157 toUpper(string?: string): string;
18158 }
18159
18160 interface LoDashImplicitWrapper<T> {
18161 /**
18162 * @see _.toUpper
18163 */
18164 toUpper(): string;
18165 }
18166
18167 interface LoDashExplicitWrapper<T> {
18168 /**
18169 * @see _.toUpper
18170 */
18171 toUpper(): LoDashExplicitWrapper<string>;
18172 }
18173
18174 //_.trim
18175 interface LoDashStatic {
18176 /**
18177 * Removes leading and trailing whitespace or specified characters from string.
18178 *
18179 * @param string The string to trim.
18180 * @param chars The characters to trim.
18181 * @return Returns the trimmed string.
18182 */
18183 trim(
18184 string?: string,
18185 chars?: string
18186 ): string;
18187 }
18188
18189 interface LoDashImplicitWrapper<T> {
18190 /**
18191 * @see _.trim
18192 */
18193 trim(chars?: string): string;
18194 }
18195
18196 interface LoDashExplicitWrapper<T> {
18197 /**
18198 * @see _.trim
18199 */
18200 trim(chars?: string): LoDashExplicitWrapper<string>;
18201 }
18202
18203 //_.trimEnd
18204 interface LoDashStatic {
18205 /**
18206 * Removes trailing whitespace or specified characters from string.
18207 *
18208 * @param string The string to trim.
18209 * @param chars The characters to trim.
18210 * @return Returns the trimmed string.
18211 */
18212 trimEnd(
18213 string?: string,
18214 chars?: string
18215 ): string;
18216 }
18217
18218 interface LoDashImplicitWrapper<T> {
18219 /**
18220 * @see _.trimEnd
18221 */
18222 trimEnd(chars?: string): string;
18223 }
18224
18225 interface LoDashExplicitWrapper<T> {
18226 /**
18227 * @see _.trimEnd
18228 */
18229 trimEnd(chars?: string): LoDashExplicitWrapper<string>;
18230 }
18231
18232 //_.trimStart
18233 interface LoDashStatic {
18234 /**
18235 * Removes leading whitespace or specified characters from string.
18236 *
18237 * @param string The string to trim.
18238 * @param chars The characters to trim.
18239 * @return Returns the trimmed string.
18240 */
18241 trimStart(
18242 string?: string,
18243 chars?: string
18244 ): string;
18245 }
18246
18247 interface LoDashImplicitWrapper<T> {
18248 /**
18249 * @see _.trimStart
18250 */
18251 trimStart(chars?: string): string;
18252 }
18253
18254 interface LoDashExplicitWrapper<T> {
18255 /**
18256 * @see _.trimStart
18257 */
18258 trimStart(chars?: string): LoDashExplicitWrapper<string>;
18259 }
18260
18261 //_.truncate
18262 interface TruncateOptions {
18263 /** The maximum string length. */
18264 length?: number;
18265 /** The string to indicate text is omitted. */
18266 omission?: string;
18267 /** The separator pattern to truncate to. */
18268 separator?: string|RegExp;
18269 }
18270
18271 interface LoDashStatic {
18272 /**
18273 * Truncates string if it’s longer than the given maximum string length. The last characters of the truncated
18274 * string are replaced with the omission string which defaults to "…".
18275 *
18276 * @param string The string to truncate.
18277 * @param options The options object or maximum string length.
18278 * @return Returns the truncated string.
18279 */
18280 truncate(
18281 string?: string,
18282 options?: TruncateOptions
18283 ): string;
18284 }
18285
18286 interface LoDashImplicitWrapper<T> {
18287 /**
18288 * @see _.truncate
18289 */
18290 truncate(options?: TruncateOptions): string;
18291 }
18292
18293 interface LoDashExplicitWrapper<T> {
18294 /**
18295 * @see _.truncate
18296 */
18297 truncate(options?: TruncateOptions): LoDashExplicitWrapper<string>;
18298 }
18299
18300 //_.unescape
18301 interface LoDashStatic {
18302 /**
18303 * The inverse of _.escape; this method converts the HTML entities &amp;, &lt;, &gt;, &quot;, &#39;, and &#96;
18304 * in string to their corresponding characters.
18305 *
18306 * Note: No other HTML entities are unescaped. To unescape additional HTML entities use a third-party library
18307 * like he.
18308 *
18309 * @param string The string to unescape.
18310 * @return Returns the unescaped string.
18311 */
18312 unescape(string?: string): string;
18313 }
18314
18315 interface LoDashImplicitWrapper<T> {
18316 /**
18317 * @see _.unescape
18318 */
18319 unescape(): string;
18320 }
18321
18322 interface LoDashExplicitWrapper<T> {
18323 /**
18324 * @see _.unescape
18325 */
18326 unescape(): LoDashExplicitWrapper<string>;
18327 }
18328
18329 //_.upperCase
18330 interface LoDashStatic {
18331 /**
18332 * Converts `string`, as space separated words, to upper case.
18333 *
18334 * @param string The string to convert.
18335 * @return Returns the upper cased string.
18336 */
18337 upperCase(string?: string): string;
18338 }
18339
18340 interface LoDashImplicitWrapper<T> {
18341 /**
18342 * @see _.upperCase
18343 */
18344 upperCase(): string;
18345 }
18346
18347 interface LoDashExplicitWrapper<T> {
18348 /**
18349 * @see _.upperCase
18350 */
18351 upperCase(): LoDashExplicitWrapper<string>;
18352 }
18353
18354 //_.upperFirst
18355 interface LoDashStatic {
18356 /**
18357 * Converts the first character of `string` to upper case.
18358 *
18359 * @param string The string to convert.
18360 * @return Returns the converted string.
18361 */
18362 upperFirst(string?: string): string;
18363 }
18364
18365 interface LoDashImplicitWrapper<T> {
18366 /**
18367 * @see _.upperFirst
18368 */
18369 upperFirst(): string;
18370 }
18371
18372 interface LoDashExplicitWrapper<T> {
18373 /**
18374 * @see _.upperFirst
18375 */
18376 upperFirst(): LoDashExplicitWrapper<string>;
18377 }
18378
18379 //_.words
18380 interface LoDashStatic {
18381 /**
18382 * Splits `string` into an array of its words.
18383 *
18384 * @param string The string to inspect.
18385 * @param pattern The pattern to match words.
18386 * @return Returns the words of `string`.
18387 */
18388 words(
18389 string?: string,
18390 pattern?: string|RegExp
18391 ): string[];
18392 }
18393
18394 interface LoDashImplicitWrapper<T> {
18395 /**
18396 * @see _.words
18397 */
18398 words(pattern?: string|RegExp): string[];
18399 }
18400
18401 interface LoDashExplicitWrapper<T> {
18402 /**
18403 * @see _.words
18404 */
18405 words(pattern?: string|RegExp): LoDashExplicitArrayWrapper<string>;
18406 }
18407
18408 /***********
18409 * Utility *
18410 ***********/
18411
18412 //_.attempt
18413 interface LoDashStatic {
18414 /**
18415 * Attempts to invoke func, returning either the result or the caught error object. Any additional arguments
18416 * are provided to func when it’s invoked.
18417 *
18418 * @param func The function to attempt.
18419 * @return Returns the func result or error object.
18420 */
18421 attempt<TResult>(func: (...args: any[]) => TResult, ...args: any[]): TResult|Error;
18422 }
18423
18424 interface LoDashImplicitObjectWrapper<T> {
18425 /**
18426 * @see _.attempt
18427 */
18428 attempt<TResult>(...args: any[]): TResult|Error;
18429 }
18430
18431 interface LoDashExplicitObjectWrapper<T> {
18432 /**
18433 * @see _.attempt
18434 */
18435 attempt<TResult>(...args: any[]): LoDashExplicitObjectWrapper<TResult|Error>;
18436 }
18437
18438 //_.constant
18439 interface LoDashStatic {
18440 /**
18441 * Creates a function that returns value.
18442 *
18443 * @param value The value to return from the new function.
18444 * @return Returns the new function.
18445 */
18446 constant<T>(value: T): () => T;
18447 }
18448
18449 interface LoDashImplicitWrapperBase<T, TWrapper> {
18450 /**
18451 * @see _.constant
18452 */
18453 constant<TResult>(): LoDashImplicitObjectWrapper<() => TResult>;
18454 }
18455
18456 interface LoDashExplicitWrapperBase<T, TWrapper> {
18457 /**
18458 * @see _.constant
18459 */
18460 constant<TResult>(): LoDashExplicitObjectWrapper<() => TResult>;
18461 }
18462
18463 //_.defaultTo
18464 interface LoDashStatic {
18465 /**
18466 * Checks `value` to determine whether a default value should be returned in
18467 * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,
18468 * or `undefined`.
18469 *
18470 * @param value The value to check.
18471 * @param defaultValue The default value.
18472 * @returns Returns the resolved value.
18473 */
18474 defaultTo<T>(value: T, defaultValue: T): T;
18475 }
18476
18477 interface LoDashImplicitWrapperBase<T, TWrapper> {
18478 /**
18479 * @see _.defaultTo
18480 */
18481 defaultTo<TResult>(value: TResult): LoDashImplicitObjectWrapper<TResult>;
18482 }
18483
18484 interface LoDashExplicitWrapperBase<T, TWrapper> {
18485 /**
18486 * @see _.defaultTo
18487 */
18488 defaultTo<TResult>(value: TResult): LoDashExplicitObjectWrapper<TResult>;
18489 }
18490
18491 //_.identity
18492 interface LoDashStatic {
18493 /**
18494 * This method returns the first argument provided to it.
18495 *
18496 * @param value Any value.
18497 * @return Returns value.
18498 */
18499 identity<T>(value?: T): T;
18500 }
18501
18502 interface LoDashImplicitWrapper<T> {
18503 /**
18504 * @see _.identity
18505 */
18506 identity(): T;
18507 }
18508
18509 interface LoDashImplicitArrayWrapper<T> {
18510 /**
18511 * @see _.identity
18512 */
18513 identity(): T[];
18514 }
18515
18516 interface LoDashImplicitObjectWrapper<T> {
18517 /**
18518 * @see _.identity
18519 */
18520 identity(): T;
18521 }
18522
18523 interface LoDashExplicitWrapper<T> {
18524 /**
18525 * @see _.identity
18526 */
18527 identity(): LoDashExplicitWrapper<T>;
18528 }
18529
18530 interface LoDashExplicitArrayWrapper<T> {
18531 /**
18532 * @see _.identity
18533 */
18534 identity(): LoDashExplicitArrayWrapper<T>;
18535 }
18536
18537 interface LoDashExplicitObjectWrapper<T> {
18538 /**
18539 * @see _.identity
18540 */
18541 identity(): LoDashExplicitObjectWrapper<T>;
18542 }
18543
18544 //_.iteratee
18545 interface LoDashStatic {
18546 /**
18547 * Creates a function that invokes `func` with the arguments of the created
18548 * function. If `func` is a property name the created callback returns the
18549 * property value for a given element. If `func` is an object the created
18550 * callback returns `true` for elements that contain the equivalent object properties, otherwise it returns `false`.
18551 *
18552 * @static
18553 * @memberOf _
18554 * @category Util
18555 * @param {*} [func=_.identity] The value to convert to a callback.
18556 * @returns {Function} Returns the callback.
18557 * @example
18558 *
18559 * var users = [
18560 * { 'user': 'barney', 'age': 36 },
18561 * { 'user': 'fred', 'age': 40 }
18562 * ];
18563 *
18564 * // create custom iteratee shorthands
18565 * _.iteratee = _.wrap(_.iteratee, function(callback, func) {
18566 * var p = /^(\S+)\s*([<>])\s*(\S+)$/.exec(func);
18567 * return !p ? callback(func) : function(object) {
18568 * return (p[2] == '>' ? object[p[1]] > p[3] : object[p[1]] < p[3]);
18569 * };
18570 * });
18571 *
18572 * _.filter(users, 'age > 36');
18573 * // => [{ 'user': 'fred', 'age': 40 }]
18574 */
18575 iteratee<TResult>(
18576 func: Function
18577 ): (...args: any[]) => TResult;
18578
18579 /**
18580 * @see _.iteratee
18581 */
18582 iteratee<TResult>(
18583 func: string
18584 ): (object: any) => TResult;
18585
18586 /**
18587 * @see _.iteratee
18588 */
18589 iteratee(
18590 func: Object
18591 ): (object: any) => boolean;
18592
18593 /**
18594 * @see _.iteratee
18595 */
18596 iteratee<TResult>(): (value: TResult) => TResult;
18597 }
18598
18599 interface LoDashImplicitWrapper<T> {
18600 /**
18601 * @see _.iteratee
18602 */
18603 iteratee<TResult>(): LoDashImplicitObjectWrapper<(object: any) => TResult>;
18604 }
18605
18606 interface LoDashImplicitObjectWrapper<T> {
18607 /**
18608 * @see _.iteratee
18609 */
18610 iteratee(): LoDashImplicitObjectWrapper<(object: any) => boolean>;
18611
18612 /**
18613 * @see _.iteratee
18614 */
18615 iteratee<TResult>(): LoDashImplicitObjectWrapper<(...args: any[]) => TResult>;
18616 }
18617
18618 interface LoDashExplicitWrapper<T> {
18619 /**
18620 * @see _.iteratee
18621 */
18622 iteratee<TResult>(): LoDashExplicitObjectWrapper<(object: any) => TResult>;
18623 }
18624
18625 interface LoDashExplicitObjectWrapper<T> {
18626 /**
18627 * @see _.iteratee
18628 */
18629 iteratee(): LoDashExplicitObjectWrapper<(object: any) => boolean>;
18630
18631 /**
18632 * @see _.iteratee
18633 */
18634 iteratee<TResult>(): LoDashExplicitObjectWrapper<(...args: any[]) => TResult>;
18635 }
18636
18637 //_.matches
18638 interface LoDashStatic {
18639 /**
18640 * Creates a function that performs a deep comparison between a given object and source, returning true if the
18641 * given object has equivalent property values, else false.
18642 *
18643 * Note: This method supports comparing arrays, booleans, Date objects, numbers, Object objects, regexes, and
18644 * strings. Objects are compared by their own, not inherited, enumerable properties. For comparing a single own
18645 * or inherited property value see _.matchesProperty.
18646 *
18647 * @param source The object of property values to match.
18648 * @return Returns the new function.
18649 */
18650 matches<T>(source: T): (value: any) => boolean;
18651
18652 /**
18653 * @see _.matches
18654 */
18655 matches<T, V>(source: T): (value: V) => boolean;
18656 }
18657
18658 interface LoDashImplicitWrapperBase<T, TWrapper> {
18659 /**
18660 * @see _.matches
18661 */
18662 matches<V>(): LoDashImplicitObjectWrapper<(value: V) => boolean>;
18663 }
18664
18665 interface LoDashExplicitWrapperBase<T, TWrapper> {
18666 /**
18667 * @see _.matches
18668 */
18669 matches<V>(): LoDashExplicitObjectWrapper<(value: V) => boolean>;
18670 }
18671
18672 //_.matchesProperty
18673 interface LoDashStatic {
18674 /**
18675 * Creates a function that compares the property value of path on a given object to value.
18676 *
18677 * Note: This method supports comparing arrays, booleans, Date objects, numbers, Object objects, regexes, and
18678 * strings. Objects are compared by their own, not inherited, enumerable properties.
18679 *
18680 * @param path The path of the property to get.
18681 * @param srcValue The value to match.
18682 * @return Returns the new function.
18683 */
18684 matchesProperty<T>(
18685 path: Many<StringRepresentable>,
18686 srcValue: T
18687 ): (value: any) => boolean;
18688
18689 /**
18690 * @see _.matchesProperty
18691 */
18692 matchesProperty<T, V>(
18693 path: Many<StringRepresentable>,
18694 srcValue: T
18695 ): (value: V) => boolean;
18696 }
18697
18698 interface LoDashImplicitWrapperBase<T, TWrapper> {
18699 /**
18700 * @see _.matchesProperty
18701 */
18702 matchesProperty<SrcValue>(
18703 srcValue: SrcValue
18704 ): LoDashImplicitObjectWrapper<(value: any) => boolean>;
18705
18706 /**
18707 * @see _.matchesProperty
18708 */
18709 matchesProperty<SrcValue, Value>(
18710 srcValue: SrcValue
18711 ): LoDashImplicitObjectWrapper<(value: Value) => boolean>;
18712 }
18713
18714 interface LoDashExplicitWrapperBase<T, TWrapper> {
18715 /**
18716 * @see _.matchesProperty
18717 */
18718 matchesProperty<SrcValue>(
18719 srcValue: SrcValue
18720 ): LoDashExplicitObjectWrapper<(value: any) => boolean>;
18721
18722 /**
18723 * @see _.matchesProperty
18724 */
18725 matchesProperty<SrcValue, Value>(
18726 srcValue: SrcValue
18727 ): LoDashExplicitObjectWrapper<(value: Value) => boolean>;
18728 }
18729
18730 //_.method
18731 interface LoDashStatic {
18732 /**
18733 * Creates a function that invokes the method at path on a given object. Any additional arguments are provided
18734 * to the invoked method.
18735 *
18736 * @param path The path of the method to invoke.
18737 * @param args The arguments to invoke the method with.
18738 * @return Returns the new function.
18739 */
18740 method<TObject, TResult>(
18741 path: string|StringRepresentable[],
18742 ...args: any[]
18743 ): (object: TObject) => TResult;
18744
18745 /**
18746 * @see _.method
18747 */
18748 method<TResult>(
18749 path: string|StringRepresentable[],
18750 ...args: any[]
18751 ): (object: any) => TResult;
18752 }
18753
18754 interface LoDashImplicitWrapper<T> {
18755 /**
18756 * @see _.method
18757 */
18758 method<TObject, TResult>(...args: any[]): LoDashImplicitObjectWrapper<(object: TObject) => TResult>;
18759
18760 /**
18761 * @see _.method
18762 */
18763 method<TResult>(...args: any[]): LoDashImplicitObjectWrapper<(object: any) => TResult>;
18764 }
18765
18766 interface LoDashImplicitArrayWrapper<T> {
18767 /**
18768 * @see _.method
18769 */
18770 method<TObject, TResult>(...args: any[]): LoDashImplicitObjectWrapper<(object: TObject) => TResult>;
18771
18772 /**
18773 * @see _.method
18774 */
18775 method<TResult>(...args: any[]): LoDashImplicitObjectWrapper<(object: any) => TResult>;
18776 }
18777
18778 interface LoDashExplicitWrapper<T> {
18779 /**
18780 * @see _.method
18781 */
18782 method<TObject, TResult>(...args: any[]): LoDashExplicitObjectWrapper<(object: TObject) => TResult>;
18783
18784 /**
18785 * @see _.method
18786 */
18787 method<TResult>(...args: any[]): LoDashExplicitObjectWrapper<(object: any) => TResult>;
18788 }
18789
18790 interface LoDashExplicitArrayWrapper<T> {
18791 /**
18792 * @see _.method
18793 */
18794 method<TObject, TResult>(...args: any[]): LoDashExplicitObjectWrapper<(object: TObject) => TResult>;
18795
18796 /**
18797 * @see _.method
18798 */
18799 method<TResult>(...args: any[]): LoDashExplicitObjectWrapper<(object: any) => TResult>;
18800 }
18801
18802 //_.methodOf
18803 interface LoDashStatic {
18804 /**
18805 * The opposite of _.method; this method creates a function that invokes the method at a given path on object.
18806 * Any additional arguments are provided to the invoked method.
18807 *
18808 * @param object The object to query.
18809 * @param args The arguments to invoke the method with.
18810 * @return Returns the new function.
18811 */
18812 methodOf<TObject extends {}, TResult>(
18813 object: TObject,
18814 ...args: any[]
18815 ): (path: Many<StringRepresentable>) => TResult;
18816
18817 /**
18818 * @see _.methodOf
18819 */
18820 methodOf<TResult>(
18821 object: {},
18822 ...args: any[]
18823 ): (path: Many<StringRepresentable>) => TResult;
18824 }
18825
18826 interface LoDashImplicitObjectWrapper<T> {
18827 /**
18828 * @see _.methodOf
18829 */
18830 methodOf<TResult>(
18831 ...args: any[]
18832 ): LoDashImplicitObjectWrapper<(path: Many<StringRepresentable>) => TResult>;
18833 }
18834
18835 interface LoDashExplicitObjectWrapper<T> {
18836 /**
18837 * @see _.methodOf
18838 */
18839 methodOf<TResult>(
18840 ...args: any[]
18841 ): LoDashExplicitObjectWrapper<(path: Many<StringRepresentable>) => TResult>;
18842 }
18843
18844 //_.mixin
18845 interface MixinOptions {
18846 chain?: boolean;
18847 }
18848
18849 interface LoDashStatic {
18850 /**
18851 * Adds all own enumerable function properties of a source object to the destination object. If object is a
18852 * function then methods are added to its prototype as well.
18853 *
18854 * Note: Use _.runInContext to create a pristine lodash function to avoid conflicts caused by modifying
18855 * the original.
18856 *
18857 * @param object The destination object.
18858 * @param source The object of functions to add.
18859 * @param options The options object.
18860 * @param options.chain Specify whether the functions added are chainable.
18861 * @return Returns object.
18862 */
18863 mixin<TResult, TObject>(
18864 object: TObject,
18865 source: Dictionary<Function>,
18866 options?: MixinOptions
18867 ): TResult;
18868
18869 /**
18870 * @see _.mixin
18871 */
18872 mixin<TResult>(
18873 source: Dictionary<Function>,
18874 options?: MixinOptions
18875 ): TResult;
18876 }
18877
18878 interface LoDashImplicitObjectWrapper<T> {
18879 /**
18880 * @see _.mixin
18881 */
18882 mixin<TResult>(
18883 source: Dictionary<Function>,
18884 options?: MixinOptions
18885 ): LoDashImplicitObjectWrapper<TResult>;
18886
18887 /**
18888 * @see _.mixin
18889 */
18890 mixin<TResult>(
18891 options?: MixinOptions
18892 ): LoDashImplicitObjectWrapper<TResult>;
18893 }
18894
18895 interface LoDashExplicitObjectWrapper<T> {
18896 /**
18897 * @see _.mixin
18898 */
18899 mixin<TResult>(
18900 source: Dictionary<Function>,
18901 options?: MixinOptions
18902 ): LoDashExplicitObjectWrapper<TResult>;
18903
18904 /**
18905 * @see _.mixin
18906 */
18907 mixin<TResult>(
18908 options?: MixinOptions
18909 ): LoDashExplicitObjectWrapper<TResult>;
18910 }
18911
18912 //_.noConflict
18913 interface LoDashStatic {
18914 /**
18915 * Reverts the _ variable to its previous value and returns a reference to the lodash function.
18916 *
18917 * @return Returns the lodash function.
18918 */
18919 noConflict(): typeof _;
18920 }
18921
18922 interface LoDashImplicitWrapperBase<T, TWrapper> {
18923 /**
18924 * @see _.noConflict
18925 */
18926 noConflict(): typeof _;
18927 }
18928
18929 interface LoDashExplicitWrapperBase<T, TWrapper> {
18930 /**
18931 * @see _.noConflict
18932 */
18933 noConflict(): LoDashExplicitObjectWrapper<typeof _>;
18934 }
18935
18936 //_.noop
18937 interface LoDashStatic {
18938 /**
18939 * A no-operation function that returns undefined regardless of the arguments it receives.
18940 *
18941 * @return undefined
18942 */
18943 noop(...args: any[]): void;
18944 }
18945
18946 interface LoDashImplicitWrapperBase<T, TWrapper> {
18947 /**
18948 * @see _.noop
18949 */
18950 noop(...args: any[]): void;
18951 }
18952
18953 interface LoDashExplicitWrapperBase<T, TWrapper> {
18954 /**
18955 * @see _.noop
18956 */
18957 noop(...args: any[]): _.LoDashExplicitWrapper<void>;
18958 }
18959
18960 //_.nthArg
18961 interface LoDashStatic {
18962 /**
18963 * Creates a function that returns its nth argument.
18964 *
18965 * @param n The index of the argument to return.
18966 * @return Returns the new function.
18967 */
18968 nthArg<TResult extends Function>(n?: number): TResult;
18969 }
18970
18971 interface LoDashImplicitWrapper<T> {
18972 /**
18973 * @see _.nthArg
18974 */
18975 nthArg<TResult extends Function>(): LoDashImplicitObjectWrapper<TResult>;
18976 }
18977
18978 interface LoDashExplicitWrapper<T> {
18979 /**
18980 * @see _.nthArg
18981 */
18982 nthArg<TResult extends Function>(): LoDashExplicitObjectWrapper<TResult>;
18983 }
18984
18985 //_.over
18986 interface LoDashStatic {
18987 /**
18988 * Creates a function that invokes iteratees with the arguments provided to the created function and returns
18989 * their results.
18990 *
18991 * @param iteratees The iteratees to invoke.
18992 * @return Returns the new function.
18993 */
18994 over<TResult>(...iteratees: Array<Many<Function>>): (...args: any[]) => TResult[];
18995 }
18996
18997 interface LoDashImplicitArrayWrapper<T> {
18998 /**
18999 * @see _.over
19000 */
19001 over<TResult>(...iteratees: Array<Many<Function>>): LoDashImplicitObjectWrapper<(...args: any[]) => TResult[]>;
19002 }
19003
19004 interface LoDashImplicitObjectWrapper<T> {
19005 /**
19006 * @see _.over
19007 */
19008 over<TResult>(...iteratees: Array<Many<Function>>): LoDashImplicitObjectWrapper<(...args: any[]) => TResult[]>;
19009 }
19010
19011 interface LoDashExplicitArrayWrapper<T> {
19012 /**
19013 * @see _.over
19014 */
19015 over<TResult>(...iteratees: Array<Many<Function>>): LoDashExplicitObjectWrapper<(...args: any[]) => TResult[]>;
19016 }
19017
19018 interface LoDashExplicitObjectWrapper<T> {
19019 /**
19020 * @see _.over
19021 */
19022 over<TResult>(...iteratees: Array<Many<Function>>): LoDashExplicitObjectWrapper<(...args: any[]) => TResult[]>;
19023 }
19024
19025 //_.overEvery
19026 interface LoDashStatic {
19027 /**
19028 * Creates a function that checks if all of the predicates return truthy when invoked with the arguments
19029 * provided to the created function.
19030 *
19031 * @param predicates The predicates to check.
19032 * @return Returns the new function.
19033 */
19034 overEvery(...predicates: Array<Many<Function>>): (...args: any[]) => boolean;
19035 }
19036
19037 interface LoDashImplicitArrayWrapper<T> {
19038 /**
19039 * @see _.overEvery
19040 */
19041 overEvery(...predicates: Array<Many<Function>>): LoDashImplicitObjectWrapper<(...args: any[]) => boolean>;
19042 }
19043
19044 interface LoDashImplicitObjectWrapper<T> {
19045 /**
19046 * @see _.overEvery
19047 */
19048 overEvery(...predicates: Array<Many<Function>>): LoDashImplicitObjectWrapper<(...args: any[]) => boolean>;
19049 }
19050
19051 interface LoDashExplicitArrayWrapper<T> {
19052 /**
19053 * @see _.overEvery
19054 */
19055 overEvery(...predicates: Array<Many<Function>>): LoDashExplicitObjectWrapper<(...args: any[]) => boolean>;
19056 }
19057
19058 interface LoDashExplicitObjectWrapper<T> {
19059 /**
19060 * @see _.overEvery
19061 */
19062 overEvery(...predicates: Array<Many<Function>>): LoDashExplicitObjectWrapper<(...args: any[]) => boolean>;
19063 }
19064
19065 //_.overSome
19066 interface LoDashStatic {
19067 /**
19068 * Creates a function that checks if any of the predicates return truthy when invoked with the arguments
19069 * provided to the created function.
19070 *
19071 * @param predicates The predicates to check.
19072 * @return Returns the new function.
19073 */
19074 overSome(...predicates: Array<Many<Function>>): (...args: any[]) => boolean;
19075 }
19076
19077 interface LoDashImplicitArrayWrapper<T> {
19078 /**
19079 * @see _.overSome
19080 */
19081 overSome(...predicates: Array<Many<Function>>): LoDashImplicitObjectWrapper<(...args: any[]) => boolean>;
19082 }
19083
19084 interface LoDashImplicitObjectWrapper<T> {
19085 /**
19086 * @see _.overSome
19087 */
19088 overSome(...predicates: Array<Many<Function>>): LoDashImplicitObjectWrapper<(...args: any[]) => boolean>;
19089 }
19090
19091 interface LoDashExplicitArrayWrapper<T> {
19092 /**
19093 * @see _.overSome
19094 */
19095 overSome(...predicates: Array<Many<Function>>): LoDashExplicitObjectWrapper<(...args: any[]) => boolean>;
19096 }
19097
19098 interface LoDashExplicitObjectWrapper<T> {
19099 /**
19100 * @see _.overSome
19101 */
19102 overSome(...predicates: Array<Many<Function>>): LoDashExplicitObjectWrapper<(...args: any[]) => boolean>;
19103 }
19104
19105 //_.property
19106 interface LoDashStatic {
19107 /**
19108 * Creates a function that returns the property value at path on a given object.
19109 *
19110 * @param path The path of the property to get.
19111 * @return Returns the new function.
19112 */
19113 property<TObj, TResult>(path: Many<StringRepresentable>): (obj: TObj) => TResult;
19114 }
19115
19116 interface LoDashImplicitWrapper<T> {
19117 /**
19118 * @see _.property
19119 */
19120 property<TObj, TResult>(): LoDashImplicitObjectWrapper<(obj: TObj) => TResult>;
19121 }
19122
19123 interface LoDashImplicitArrayWrapper<T> {
19124 /**
19125 * @see _.property
19126 */
19127 property<TObj, TResult>(): LoDashImplicitObjectWrapper<(obj: TObj) => TResult>;
19128 }
19129
19130 interface LoDashExplicitWrapper<T> {
19131 /**
19132 * @see _.property
19133 */
19134 property<TObj, TResult>(): LoDashExplicitObjectWrapper<(obj: TObj) => TResult>;
19135 }
19136
19137 interface LoDashExplicitArrayWrapper<T> {
19138 /**
19139 * @see _.property
19140 */
19141 property<TObj, TResult>(): LoDashExplicitObjectWrapper<(obj: TObj) => TResult>;
19142 }
19143
19144 //_.propertyOf
19145 interface LoDashStatic {
19146 /**
19147 * The opposite of _.property; this method creates a function that returns the property value at a given path
19148 * on object.
19149 *
19150 * @param object The object to query.
19151 * @return Returns the new function.
19152 */
19153 propertyOf<T extends {}>(object: T): (path: Many<string>) => any;
19154 }
19155
19156 interface LoDashImplicitObjectWrapper<T> {
19157 /**
19158 * @see _.propertyOf
19159 */
19160 propertyOf(): LoDashImplicitObjectWrapper<(path: Many<string>) => any>;
19161 }
19162
19163 interface LoDashExplicitObjectWrapper<T> {
19164 /**
19165 * @see _.propertyOf
19166 */
19167 propertyOf(): LoDashExplicitObjectWrapper<(path: Many<string>) => any>;
19168 }
19169
19170 //_.range
19171 interface LoDashStatic {
19172 /**
19173 * Creates an array of numbers (positive and/or negative) progressing from start up to, but not including, end.
19174 * If end is not specified it’s set to start with start then set to 0. If end is less than start a zero-length
19175 * range is created unless a negative step is specified.
19176 *
19177 * @param start The start of the range.
19178 * @param end The end of the range.
19179 * @param step The value to increment or decrement by.
19180 * @return Returns a new range array.
19181 */
19182 range(
19183 start: number,
19184 end: number,
19185 step?: number
19186 ): number[];
19187
19188 /**
19189 * @see _.range
19190 */
19191 range(
19192 end: number,
19193 step?: number
19194 ): number[];
19195 }
19196
19197 interface LoDashImplicitWrapper<T> {
19198 /**
19199 * @see _.range
19200 */
19201 range(
19202 end?: number,
19203 step?: number
19204 ): LoDashImplicitArrayWrapper<number>;
19205 }
19206
19207 interface LoDashExplicitWrapper<T> {
19208 /**
19209 * @see _.range
19210 */
19211 range(
19212 end?: number,
19213 step?: number
19214 ): LoDashExplicitArrayWrapper<number>;
19215 }
19216
19217 //_.rangeRight
19218 interface LoDashStatic {
19219 /**
19220 * This method is like `_.range` except that it populates values in
19221 * descending order.
19222 *
19223 * @static
19224 * @memberOf _
19225 * @category Util
19226 * @param {number} [start=0] The start of the range.
19227 * @param {number} end The end of the range.
19228 * @param {number} [step=1] The value to increment or decrement by.
19229 * @returns {Array} Returns the new array of numbers.
19230 * @example
19231 *
19232 * _.rangeRight(4);
19233 * // => [3, 2, 1, 0]
19234 *
19235 * _.rangeRight(-4);
19236 * // => [-3, -2, -1, 0]
19237 *
19238 * _.rangeRight(1, 5);
19239 * // => [4, 3, 2, 1]
19240 *
19241 * _.rangeRight(0, 20, 5);
19242 * // => [15, 10, 5, 0]
19243 *
19244 * _.rangeRight(0, -4, -1);
19245 * // => [-3, -2, -1, 0]
19246 *
19247 * _.rangeRight(1, 4, 0);
19248 * // => [1, 1, 1]
19249 *
19250 * _.rangeRight(0);
19251 * // => []
19252 */
19253 rangeRight(
19254 start: number,
19255 end: number,
19256 step?: number
19257 ): number[];
19258
19259 /**
19260 * @see _.rangeRight
19261 */
19262 rangeRight(
19263 end: number,
19264 step?: number
19265 ): number[];
19266 }
19267
19268 interface LoDashImplicitWrapper<T> {
19269 /**
19270 * @see _.rangeRight
19271 */
19272 rangeRight(
19273 end?: number,
19274 step?: number
19275 ): LoDashImplicitArrayWrapper<number>;
19276 }
19277
19278 interface LoDashExplicitWrapper<T> {
19279 /**
19280 * @see _.rangeRight
19281 */
19282 rangeRight(
19283 end?: number,
19284 step?: number
19285 ): LoDashExplicitArrayWrapper<number>;
19286 }
19287
19288 //_.runInContext
19289 interface LoDashStatic {
19290 /**
19291 * Create a new pristine lodash function using the given context object.
19292 *
19293 * @param context The context object.
19294 * @return Returns a new lodash function.
19295 */
19296 runInContext(context?: Object): typeof _;
19297 }
19298
19299 interface LoDashImplicitObjectWrapper<T> {
19300 /**
19301 * @see _.runInContext
19302 */
19303 runInContext(): typeof _;
19304 }
19305
19306 // _.stubArray
19307 interface LoDashStatic {
19308 /**
19309 * This method returns a new empty array.
19310 *
19311 * @returns Returns the new empty array.
19312 */
19313 stubArray(): any[];
19314 }
19315
19316 interface LoDashImplicitWrapperBase<T, TWrapper> {
19317 /**
19318 * @see _.stubArray
19319 */
19320 stubArray(): any[];
19321 }
19322
19323 interface LoDashExplicitWrapperBase<T, TWrapper> {
19324 /**
19325 * @see _.stubArray
19326 */
19327 stubArray(): _.LoDashExplicitArrayWrapper<any>;
19328 }
19329
19330 // _.stubFalse
19331 interface LoDashStatic {
19332 /**
19333 * This method returns `false`.
19334 *
19335 * @returns Returns `false`.
19336 */
19337 stubFalse(): boolean;
19338 }
19339
19340 interface LoDashImplicitWrapperBase<T, TWrapper> {
19341 /**
19342 * @see _.stubFalse
19343 */
19344 stubFalse(): boolean;
19345 }
19346
19347 interface LoDashExplicitWrapperBase<T, TWrapper> {
19348 /**
19349 * @see _.stubFalse
19350 */
19351 stubFalse(): _.LoDashExplicitWrapper<boolean>;
19352 }
19353
19354 interface LoDashStatic {
19355 /**
19356 * This method returns a new empty object.
19357 *
19358 * @returns Returns the new empty object.
19359 */
19360 stubObject(): Object;
19361 }
19362
19363 interface LoDashImplicitWrapperBase<T, TWrapper> {
19364 /**
19365 * @see _.stubObject
19366 */
19367 stubObject(): Object;
19368 }
19369
19370 interface LoDashExplicitWrapperBase<T, TWrapper> {
19371 /**
19372 * @see _.stubObject
19373 */
19374 stubObject(): _.LoDashExplicitObjectWrapper<Object>;
19375 }
19376
19377 interface LoDashStatic {
19378 /**
19379 * This method returns an empty string.
19380 *
19381 * @returns Returns the empty string.
19382 */
19383 stubString(): string;
19384 }
19385
19386 interface LoDashImplicitWrapperBase<T, TWrapper> {
19387 /**
19388 * @see _.stubString
19389 */
19390 stubString(): string;
19391 }
19392
19393 interface LoDashExplicitWrapperBase<T, TWrapper> {
19394 /**
19395 * @see _.stubString
19396 */
19397 stubString(): _.LoDashExplicitWrapper<string>;
19398 }
19399
19400 interface LoDashStatic {
19401 /**
19402 * This method returns `true`.
19403 *
19404 * @returns Returns `true`.
19405 */
19406 stubTrue(): boolean;
19407 }
19408
19409 interface LoDashImplicitWrapperBase<T, TWrapper> {
19410 /**
19411 * @see _.stubTrue
19412 */
19413 stubTrue(): boolean;
19414 }
19415
19416 interface LoDashExplicitWrapperBase<T, TWrapper> {
19417 /**
19418 * @see _.stubTrue
19419 */
19420 stubTrue(): _.LoDashExplicitWrapper<boolean>;
19421 }
19422
19423 //_.times
19424 interface LoDashStatic {
19425 /**
19426 * Invokes the iteratee function n times, returning an array of the results of each invocation. The iteratee
19427 * is invoked with one argument; (index).
19428 *
19429 * @param n The number of times to invoke iteratee.
19430 * @param iteratee The function invoked per iteration.
19431 * @return Returns the array of results.
19432 */
19433 times<TResult>(
19434 n: number,
19435 iteratee: (num: number) => TResult
19436 ): TResult[];
19437
19438 /**
19439 * @see _.times
19440 */
19441 times(n: number): number[];
19442 }
19443
19444 interface LoDashImplicitWrapper<T> {
19445 /**
19446 * @see _.times
19447 */
19448 times<TResult>(
19449 iteratee: (num: number) => TResult
19450 ): TResult[];
19451
19452 /**
19453 * @see _.times
19454 */
19455 times(): number[];
19456 }
19457
19458 interface LoDashExplicitWrapper<T> {
19459 /**
19460 * @see _.times
19461 */
19462 times<TResult>(
19463 iteratee: (num: number) => TResult
19464 ): LoDashExplicitArrayWrapper<TResult>;
19465
19466 /**
19467 * @see _.times
19468 */
19469 times(): LoDashExplicitArrayWrapper<number>;
19470 }
19471
19472 //_.toPath
19473 interface LoDashStatic {
19474 /**
19475 * Converts `value` to a property path array.
19476 *
19477 * @static
19478 * @memberOf _
19479 * @category Util
19480 * @param {*} value The value to convert.
19481 * @returns {Array} Returns the new property path array.
19482 * @example
19483 *
19484 * _.toPath('a.b.c');
19485 * // => ['a', 'b', 'c']
19486 *
19487 * _.toPath('a[0].b.c');
19488 * // => ['a', '0', 'b', 'c']
19489 *
19490 * var path = ['a', 'b', 'c'],
19491 * newPath = _.toPath(path);
19492 *
19493 * console.log(newPath);
19494 * // => ['a', 'b', 'c']
19495 *
19496 * console.log(path === newPath);
19497 * // => false
19498 */
19499 toPath(value: any): string[];
19500 }
19501
19502 interface LoDashImplicitWrapperBase<T, TWrapper> {
19503 /**
19504 * @see _.toPath
19505 */
19506 toPath(): LoDashImplicitWrapper<string[]>;
19507 }
19508
19509 interface LoDashExplicitWrapperBase<T, TWrapper> {
19510 /**
19511 * @see _.toPath
19512 */
19513 toPath(): LoDashExplicitWrapper<string[]>;
19514 }
19515
19516 //_.uniqueId
19517 interface LoDashStatic {
19518 /**
19519 * Generates a unique ID. If prefix is provided the ID is appended to it.
19520 *
19521 * @param prefix The value to prefix the ID with.
19522 * @return Returns the unique ID.
19523 */
19524 uniqueId(prefix?: string): string;
19525 }
19526
19527 interface LoDashImplicitWrapper<T> {
19528 /**
19529 * @see _.uniqueId
19530 */
19531 uniqueId(): string;
19532 }
19533
19534 interface LoDashExplicitWrapper<T> {
19535 /**
19536 * @see _.uniqueId
19537 */
19538 uniqueId(): LoDashExplicitWrapper<string>;
19539 }
19540
19541 type ListIterator<T, TResult> = (value: T, index: number, collection: List<T>) => TResult;
19542
19543 type DictionaryIterator<T, TResult> = (value: T, key?: string, collection?: Dictionary<T>) => TResult;
19544
19545 type NumericDictionaryIterator<T, TResult> = (value: T, key?: number, collection?: Dictionary<T>) => TResult;
19546
19547 type ObjectIterator<T, TResult> = (element: T, key?: string, collection?: any) => TResult;
19548
19549 type StringIterator<TResult> = (char: string, index?: number, string?: string) => TResult;
19550
19551 type MemoVoidIterator<T, TResult> = (prev: TResult, curr: T, indexOrKey?: any, list?: T[]) => void;
19552
19553 type MemoIterator<T, TResult> = (prev: TResult, curr: T, indexOrKey?: any, list?: T[]) => TResult;
19554
19555 type MemoVoidArrayIterator<T, TResult> = (acc: TResult, curr: T, index?: number, arr?: T[]) => void;
19556 type MemoVoidDictionaryIterator<T, TResult> = (acc: TResult, curr: T, key?: string, dict?: Dictionary<T>) => void;
19557
19558 // Common interface between Arrays and jQuery objects
19559 interface List<T> {
19560 [index: number]: T;
19561 length: number;
19562 }
19563
19564 interface Dictionary<T> {
19565 [index: string]: T;
19566 }
19567
19568 interface NumericDictionary<T> {
19569 [index: number]: T;
19570 }
19571
19572 interface StringRepresentable {
19573 toString(): string;
19574 }
19575
19576 interface Cancelable {
19577 cancel(): void;
19578 flush(): void;
19579 }
19580}
19581
19582// Backward compatibility with --target es5
19583declare global {
19584 interface Set<T> { }
19585 interface Map<K, V> { }
19586 interface WeakSet<T> { }
19587 interface WeakMap<K extends object, V> { }
19588}
19589
\No newline at end of file