import _ = require("../index"); declare module "../index" { interface LoDashStatic { /** * Creates an array of elements split into groups the length of size. If collection can’t be split evenly, the * final chunk will be the remaining elements. * * @param array The array to process. * @param size The length of each chunk. * @return Returns the new array containing chunks. */ chunk(array: List | null | undefined, size?: number): T[][]; } interface Collection { /** * @see _.chunk */ chunk(size?: number): Collection; } interface CollectionChain { /** * @see _.chunk */ chunk(size?: number): CollectionChain; } interface LoDashStatic { /** * Creates an array with all falsey values removed. The values false, null, 0, "", undefined, and NaN are * falsey. * * @param array The array to compact. * @return Returns the new array of filtered values. */ compact(array: List | null | undefined): T[]; } type Truthy = T extends null | undefined | false | "" | 0 ? never : T; interface Collection { /** * @see _.compact */ compact(): Collection>; } interface CollectionChain { /** * @see _.compact */ compact(): CollectionChain>; } interface LoDashStatic { /** * Creates a new array concatenating `array` with any additional arrays * and/or values. * * @category Array * @param [values] The array values to concatenate. * @returns Returns the new concatenated array. * @example * * var array = [1]; * var other = _.concat(array, 2, [3], [[4]]); * * console.log(other); * // => [1, 2, 3, [4]] * * console.log(array); * // => [1] */ concat(...values: Array>): T[]; } interface Primitive { /** * @see _.concat */ concat(...values: Array>): Collection; } interface Collection { /** * @see _.concat */ concat(...values: Array>): Collection; } interface Object { /** * @see _.concat */ concat(...values: Array>): Collection; } interface PrimitiveChain { /** * @see _.concat */ concat(...values: Array>): CollectionChain; } interface CollectionChain { /** * @see _.concat */ concat(...values: Array>): CollectionChain; } interface ObjectChain { /** * @see _.concat */ concat(...values: Array>): CollectionChain; } interface LoDashStatic { /** * Creates an array of `array` values not included in the other provided arrays using SameValueZero for * equality comparisons. The order and references of result values are determined by the first array. * * @param array The array to inspect. * @param values The arrays of values to exclude. * @return Returns the new array of filtered values. */ difference(array: List | null | undefined, ...values: Array>): T[]; } interface Collection { /** * @see _.difference */ difference(...values: Array>): Collection; } interface CollectionChain { /** * @see _.difference */ difference(...values: Array>): CollectionChain; } interface LoDashStatic { /** * This method is like _.difference except that it accepts iteratee which is invoked for each element * of array and values to generate the criterion by which they're compared. The order and references * of result values are determined by the first array. The iteratee is invoked with one argument: (value). * * @param array The array to inspect. * @param values The values to exclude. * @param iteratee The iteratee invoked per element. * @returns Returns the new array of filtered values. */ differenceBy(array: List | null | undefined, values: List, iteratee: ValueIteratee): T1[]; /** * @see _.differenceBy */ differenceBy(array: List | null | undefined, values1: List, values2: List, iteratee: ValueIteratee): T1[]; /** * @see _.differenceBy */ differenceBy(array: List | null | undefined, values1: List, values2: List, values3: List, iteratee: ValueIteratee): T1[]; /** * @see _.differenceBy */ differenceBy(array: List | null | undefined, values1: List, values2: List, values3: List, values4: List, iteratee: ValueIteratee): T1[]; /** * @see _.differenceBy */ differenceBy(array: List | null | undefined, values1: List, values2: List, values3: List, values4: List, values5: List, iteratee: ValueIteratee): T1[]; /** * @see _.differenceBy */ differenceBy(array: List | null | undefined, values1: List, values2: List, values3: List, values4: List, values5: List, ...values: Array | ValueIteratee>): T1[]; /** * @see _.differenceBy */ differenceBy(array: List | null | undefined, ...values: Array>): T[]; } interface Collection { /** * @see _.differenceBy */ differenceBy(values1: List, iteratee?: ValueIteratee): Collection; /** * @see _.differenceBy */ differenceBy(...values: Array | ValueIteratee>): Collection; } interface CollectionChain { /** * @see _.differenceBy */ differenceBy(values1: List, iteratee?: ValueIteratee): CollectionChain; /** * @see _.differenceBy */ differenceBy(...values: Array | ValueIteratee>): CollectionChain; } interface LoDashStatic { /** * This method is like _.difference except that it accepts comparator which is invoked to compare elements * of array to values. The order and references of result values are determined by the first array. The * comparator is invoked with two arguments: (arrVal, othVal). * * @category Array * @param [values] The arrays to inspect. * @param [comparator] The comparator invoked per element. * @returns Returns the new array of filtered values. * @example * * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual); * // => [{ 'x': 2, 'y': 1 }] */ differenceWith(array: List | null | undefined, values: List, comparator: Comparator2): T1[]; /** * @see _.differenceWith */ differenceWith(array: List | null | undefined, values1: List, values2: List, comparator: Comparator2): T1[]; /** * @see _.differenceWith */ differenceWith(array: List | null | undefined, values1: List, values2: List, ...values: Array | Comparator2>): T1[]; /** * @see _.differenceWith */ differenceWith(array: List | null | undefined, ...values: Array>): T[]; } interface Collection { /** * @see _.differenceWith */ differenceWith(values: List, comparator: Comparator2): Collection; /** * @see _.differenceWith */ differenceWith(...values: Array | Comparator2>): Collection; } interface CollectionChain { /** * @see _.differenceWith */ differenceWith< T2>(values: List, comparator: Comparator2): CollectionChain; /** * @see _.differenceWith */ differenceWith< T2, T3, T4>(...values: Array | Comparator2>): CollectionChain; } interface LoDashStatic { /** * Creates a slice of array with n elements dropped from the beginning. * * @param array The array to query. * @param n The number of elements to drop. * @return Returns the slice of array. */ drop(array: List | null | undefined, n?: number): T[]; } interface Collection { /** * @see _.drop */ drop(n?: number): Collection; } interface CollectionChain { /** * @see _.drop */ drop(n?: number): CollectionChain; } interface LoDashStatic { /** * Creates a slice of array with n elements dropped from the end. * * @param array The array to query. * @param n The number of elements to drop. * @return Returns the slice of array. */ dropRight(array: List | null | undefined, n?: number): T[]; } interface Collection { /** * @see _.dropRight */ dropRight(n?: number): Collection; } interface CollectionChain { /** * @see _.dropRight */ dropRight(n?: number): CollectionChain; } interface LoDashStatic { /** * Creates a slice of array excluding elements dropped from the end. Elements are dropped until predicate * returns falsey. The predicate is invoked with three arguments: (value, index, array). * * @param array The array to query. * @param predicate The function invoked per iteration. * @return Returns the slice of array. */ dropRightWhile(array: List | null | undefined, predicate?: ListIteratee): T[]; } interface Collection { /** * @see _.dropRightWhile */ dropRightWhile(predicate?: ListIteratee): Collection; } interface CollectionChain { /** * @see _.dropRightWhile */ dropRightWhile(predicate?: ListIteratee): CollectionChain; } interface LoDashStatic { /** * Creates a slice of array excluding elements dropped from the beginning. Elements are dropped until predicate * returns falsey. The predicate is invoked with three arguments: (value, index, array). * * @param array The array to query. * @param predicate The function invoked per iteration. * @return Returns the slice of array. */ dropWhile(array: List | null | undefined, predicate?: ListIteratee): T[]; } interface Collection { /** * @see _.dropWhile */ dropWhile(predicate?: ListIteratee): Collection; } interface CollectionChain { /** * @see _.dropWhile */ dropWhile(predicate?: ListIteratee): CollectionChain; } interface LoDashStatic { /** * Fills elements of array with value from start up to, but not including, end. * * Note: This method mutates array. * * @param array The array to fill. * @param value The value to fill array with. * @param start The start position. * @param end The end position. * @return Returns array. */ fill(array: any[] | null | undefined, value: T): T[]; /** * @see _.fill */ fill(array: List | null | undefined, value: T): List; /** * @see _.fill */ fill(array: U[] | null | undefined, value: T, start?: number, end?: number): Array; /** * @see _.fill */ fill(array: List | null | undefined, value: T, start?: number, end?: number): List; } interface Collection { /** * @see _.fill */ fill(value: U, start?: number, end?: number): Collection; } interface CollectionChain { /** * @see _.fill */ fill(value: U, start?: number, end?: number): CollectionChain; } interface LoDashStatic { /** * This method is like _.find except that it returns the index of the first element predicate returns truthy * for instead of the element itself. * * @param array The array to search. * @param predicate The function invoked per iteration. * @param fromIndex The index to search from. * @return Returns the index of the found element, else -1. */ findIndex(array: List | null | undefined, predicate?: ListIterateeCustom, fromIndex?: number): number; } interface Collection { /** * @see _.findIndex */ findIndex(predicate?: ListIterateeCustom, fromIndex?: number): number; } interface CollectionChain { /** * @see _.findIndex */ findIndex(predicate?: ListIterateeCustom, fromIndex?: number): PrimitiveChain; } interface LoDashStatic { /** * This method is like _.findIndex except that it iterates over elements of collection from right to left. * * @param array The array to search. * @param predicate The function invoked per iteration. * @param fromIndex The index to search from. * @return Returns the index of the found element, else -1. */ findLastIndex(array: List | null | undefined, predicate?: ListIterateeCustom, fromIndex?: number): number; } interface Collection { /** * @see _.findLastIndex */ findLastIndex(predicate?: ListIterateeCustom, fromIndex?: number): number; } interface CollectionChain { /** * @see _.findLastIndex */ findLastIndex(predicate?: ListIterateeCustom, fromIndex?: number): PrimitiveChain; } interface LoDashStatic { /** * @see _.head */ first: LoDashStatic["head"]; } interface String { /** * @see _.first */ first(): string | undefined; } interface StringChain { /** * @see _.first */ first(): StringNullableChain; } interface StringNullableChain { /** * @see _.first */ first(): StringNullableChain; } interface Collection { /** * @see _.first */ first(): T | undefined; } interface CollectionChain { /** * @see _.first */ first(): ExpChain; } interface RecursiveArray extends Array> {} interface ListOfRecursiveArraysOrValues extends List> {} interface LoDashStatic { /** * Flattens `array` a single level deep. * * @param array The array to flatten. * @return Returns the new flattened array. */ flatten(array: List> | null | undefined): T[]; } interface String { /** * @see _.flatten */ flatten(): Collection; } interface StringChain { /** * @see _.flatten */ flatten(): CollectionChain; } interface StringNullableChain { /** * @see _.flatten */ flatten(): CollectionChain; } interface Collection { /** * @see _.flatten */ flatten(): T extends Many ? Collection : Collection; } interface CollectionChain { /** * @see _.flatten */ flatten(): T extends Many ? CollectionChain : CollectionChain; } type Flat = T extends string ? T : (T extends List ? never : T); interface LoDashStatic { /** * Recursively flattens a nested array. * * @param array The array to recursively flatten. * @return Returns the new flattened array. */ flattenDeep(array: ListOfRecursiveArraysOrValues | null | undefined): Array>; } interface Collection { /** * @see _.flattenDeep */ flattenDeep(): T extends ListOfRecursiveArraysOrValues ? Collection> : Collection; } interface CollectionChain { /** * @see _.flattenDeep */ flattenDeep(): T extends ListOfRecursiveArraysOrValues ? CollectionChain> : CollectionChain; } interface LoDashStatic { /** * Recursively flatten array up to depth times. * * @param array The array to recursively flatten. * @param number The maximum recursion depth. * @return Returns the new flattened array. */ flattenDepth(array: ListOfRecursiveArraysOrValues | null | undefined, depth?: number): T[]; } interface Collection { /** * @see _.flattenDepth */ flattenDepth(depth?: number): Collection; } interface CollectionChain { /** * @see _.flattenDepth */ flattenDepth(depth?: number): CollectionChain; } interface LoDashStatic { /** * The inverse of `_.toPairs`; this method returns an object composed * from key-value `pairs`. * * @category Array * @param pairs The key-value pairs. * @returns Returns the new object. * @example * * _.fromPairs([['fred', 30], ['barney', 40]]); * // => { 'fred': 30, 'barney': 40 } */ fromPairs(pairs: List<[PropertyName, T]> | null | undefined): Dictionary; /** * @see _.fromPairs */ fromPairs(pairs: List | null | undefined): Dictionary; } interface Collection { /** * @see _.fromPairs */ fromPairs(): Object>; } interface CollectionChain { /** * @see _.fromPairs */ fromPairs(): ObjectChain>; } interface LoDashStatic { /** * Gets the first element of array. * * @alias _.first * * @param array The array to query. * @return Returns the first element of array. */ head(array: List | null | undefined): T | undefined; } interface String { /** * @see _.head */ head(): string | undefined; } interface StringChain { /** * @see _.head */ head(): StringNullableChain; } interface StringNullableChain { /** * @see _.head */ head(): StringNullableChain; } interface Collection { /** * @see _.head */ head(): T | undefined; } interface CollectionChain { /** * @see _.head */ head(): ExpChain; } interface LoDashStatic { /** * Gets the index at which the first occurrence of `value` is found in `array` * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) * for equality comparisons. If `fromIndex` is negative, it's used as the offset * from the end of `array`. * * @category Array * @param array The array to search. * @param value The value to search for. * @param [fromIndex=0] The index to search from. * @returns Returns the index of the matched value, else `-1`. * @example * * _.indexOf([1, 2, 1, 2], 2); * // => 1 * * // using `fromIndex` * _.indexOf([1, 2, 1, 2], 2, 2); * // => 3 */ indexOf(array: List | null | undefined, value: T, fromIndex?: number): number; } interface Collection { /** * @see _.indexOf */ indexOf(value: T, fromIndex?: number): number; } interface CollectionChain { /** * @see _.indexOf */ indexOf(value: T, fromIndex?: number): PrimitiveChain; } interface LoDashStatic { /** * Gets all but the last element of array. * * @param array The array to query. * @return Returns the slice of array. */ initial(array: List | null | undefined): T[]; } interface Collection { /** * @see _.initial */ initial(): Collection; } interface CollectionChain { /** * @see _.initial */ initial(): CollectionChain; } interface LoDashStatic { /** * Creates an array of unique values that are included in all of the provided arrays using SameValueZero for * equality comparisons. * * @param arrays The arrays to inspect. * @return Returns the new array of shared values. */ intersection(...arrays: Array | null | undefined>): T[]; } interface Collection { /** * @see _.intersection */ intersection(...arrays: Array | null | undefined>): Collection; } interface CollectionChain { /** * @see _.intersection */ intersection(...arrays: Array | null | undefined>): CollectionChain; } interface LoDashStatic { /** * This method is like `_.intersection` except that it accepts `iteratee` * which is invoked for each element of each `arrays` to generate the criterion * by which uniqueness is computed. The iteratee is invoked with one argument: (value). * * @category Array * @param [arrays] The arrays to inspect. * @param [iteratee=_.identity] The iteratee invoked per element. * @returns Returns the new array of shared values. * @example * * _.intersectionBy([2.1, 1.2], [4.3, 2.4], Math.floor); * // => [2.1] * * // using the `_.property` iteratee shorthand * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); * // => [{ 'x': 1 }] */ intersectionBy(array: List | null, values: List, iteratee: ValueIteratee): T1[]; /** * @see _.intersectionBy */ intersectionBy(array: List | null, values1: List, values2: List, iteratee: ValueIteratee): T1[]; /** * @see _.intersectionBy */ intersectionBy(array: List | null | undefined, values1: List, values2: List, ...values: Array | ValueIteratee>): T1[]; /** * @see _.intersectionBy */ intersectionBy(array?: List | null, ...values: Array>): T[]; /** * @see _.intersectionBy */ intersectionBy(...values: Array | ValueIteratee>): T[]; } interface Collection { /** * @see _.intersectionBy */ intersectionBy(values: List, iteratee: ValueIteratee): Collection; /** * @see _.intersectionBy */ intersectionBy(...values: Array | ValueIteratee>): Collection; } interface CollectionChain { /** * @see _.intersectionBy */ intersectionBy(values: List, iteratee: ValueIteratee): CollectionChain; /** * @see _.intersectionBy */ intersectionBy(...values: Array | ValueIteratee>): CollectionChain; } interface LoDashStatic { /** * Creates an array of unique `array` values not included in the other * provided arrays using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) * for equality comparisons. * * @category Array * @param [values] The arrays to inspect. * @param [comparator] The comparator invoked per element. * @returns Returns the new array of filtered values. * @example * * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; * _.intersectionWith(objects, others, _.isEqual); * // => [{ 'x': 1, 'y': 2 }] */ intersectionWith(array: List | null | undefined, values: List, comparator: Comparator2): T1[]; /** * @see _.intersectionWith */ intersectionWith(array: List | null | undefined, values1: List, values2: List, comparator: Comparator2): T1[]; /** * @see _.intersectionWith */ intersectionWith(array: List | null | undefined, values1: List, values2: List, ...values: Array | Comparator2>): T1[]; /** * @see _.intersectionWith */ intersectionWith(array?: List | null, ...values: Array | Comparator2>): T[]; } interface Collection { /** * @see _.intersectionWith */ intersectionWith(values: List, comparator: Comparator2): Collection; /** * @see _.intersectionWith */ intersectionWith(...values: Array | Comparator2>): Collection; } interface CollectionChain { /** * @see _.intersectionWith */ intersectionWith(values: List, comparator: Comparator2): CollectionChain; /** * @see _.intersectionWith */ intersectionWith(...values: Array | Comparator2>): CollectionChain; } interface LoDashStatic { /** * Converts all elements in `array` into a string separated by `separator`. * * @param array The array to convert. * @param separator The element separator. * @returns Returns the joined string. */ join(array: List | null | undefined, separator?: string): string; } interface String { /** * @see _.join */ join(separator?: string): string; } interface StringChain { /** * @see _.join */ join(separator?: string): StringChain; } interface StringNullableChain { /** * @see _.join */ join(separator?: string): StringChain; } interface Collection { /** * @see _.join */ join(separator?: string): string; } interface CollectionChain { /** * @see _.join */ join(separator?: string): StringChain; } interface LoDashStatic { /** * Gets the last element of array. * * @param array The array to query. * @return Returns the last element of array. */ last(array: List | null | undefined): T | undefined; } interface Collection { /** * @see _.last */ last(): T | undefined; } interface CollectionChain { /** * @see _.last */ last(): ExpChain; } interface String { /** * @see _.last */ last(): string | undefined; } interface StringChain { /** * @see _.last */ last(): StringNullableChain; } interface StringNullableChain { /** * @see _.last */ last(): StringNullableChain; } interface LoDashStatic { /** * This method is like _.indexOf except that it iterates over elements of array from right to left. * * @param array The array to search. * @param value The value to search for. * @param fromIndex The index to search from or true to perform a binary search on a sorted array. * @return Returns the index of the matched value, else -1. */ lastIndexOf(array: List | null | undefined, value: T, fromIndex?: true|number): number; } interface Collection { /** * @see _.lastIndexOf */ lastIndexOf(value: T, fromIndex?: true|number): number; } interface CollectionChain { /** * @see _.lastIndexOf */ lastIndexOf(value: T, fromIndex?: true|number): PrimitiveChain; } interface LoDashStatic { /** * Gets the element at index `n` of `array`. If `n` is negative, the nth element from the end is returned. * * @param array array The array to query. * @param value The index of the element to return. * @return Returns the nth element of `array`. */ nth(array: List | null | undefined, n?: number): T | undefined; } interface Collection { /** * @see _.nth */ nth(n?: number): T | undefined; } interface CollectionChain { /** * @see _.nth */ nth(n?: number): ExpChain; } interface LoDashStatic { /** * Removes all provided values from array using SameValueZero for equality comparisons. * * Note: Unlike _.without, this method mutates array. * * @param array The array to modify. * @param values The values to remove. * @return Returns array. */ pull(array: T[], ...values: T[]): T[]; /** * @see _.pull */ pull(array: List, ...values: T[]): List; } interface Collection { /** * @see _.pull */ pull(...values: T[]): Collection; } interface CollectionChain { /** * @see _.pull */ pull(...values: T[]): CollectionChain; } interface LoDashStatic { /** * This method is like `_.pull` except that it accepts an array of values to remove. * * **Note:** Unlike `_.difference`, this method mutates `array`. * * @category Array * @param array The array to modify. * @param values The values to remove. * @returns Returns `array`. * @example * * var array = [1, 2, 3, 1, 2, 3]; * * _.pull(array, [2, 3]); * console.log(array); * // => [1, 1] */ pullAll(array: T[], values?: List): T[]; /** * @see _.pullAll */ pullAll(array: List, values?: List): List; } interface Collection { /** * @see _.pullAll */ pullAll(values?: List): Collection; } interface CollectionChain { /** * @see _.pullAll */ pullAll(values?: List): CollectionChain; } interface LoDashStatic { /** * This method is like `_.pullAll` except that it accepts `iteratee` which is * invoked for each element of `array` and `values` to to generate the criterion * by which uniqueness is computed. The iteratee is invoked with one argument: (value). * * **Note:** Unlike `_.differenceBy`, this method mutates `array`. * * @category Array * @param array The array to modify. * @param values The values to remove. * @param [iteratee=_.identity] The iteratee invoked per element. * @returns Returns `array`. * @example * * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }]; * * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x'); * console.log(array); * // => [{ 'x': 2 }] */ pullAllBy(array: T[], values?: List, iteratee?: ValueIteratee): T[]; /** * @see _.pullAllBy */ pullAllBy(array: List, values?: List, iteratee?: ValueIteratee): List; /** * @see _.pullAllBy */ pullAllBy(array: T1[], values: List, iteratee: ValueIteratee): T1[]; /** * @see _.pullAllBy */ pullAllBy(array: List, values: List, iteratee: ValueIteratee): List; } interface Collection { /** * @see _.pullAllBy */ pullAllBy(values?: List, iteratee?: ValueIteratee): Collection; } interface CollectionChain { /** * @see _.pullAllBy */ pullAllBy(values?: List, iteratee?: ValueIteratee): CollectionChain; } interface LoDashStatic { /** * This method is like `_.pullAll` except that it accepts `comparator` which is * invoked to compare elements of array to values. The comparator is invoked with * two arguments: (arrVal, othVal). * * **Note:** Unlike `_.differenceWith`, this method mutates `array`. * * @category Array * @param array The array to modify. * @param values The values to remove. * @param [iteratee=_.identity] The iteratee invoked per element. * @returns Returns `array`. * @example * * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }]; * * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual); * console.log(array); * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }] */ pullAllWith(array: T[], values?: List, comparator?: Comparator): T[]; /** * @see _.pullAllWith */ pullAllWith(array: List, values?: List, comparator?: Comparator): List; /** * @see _.pullAllWith */ pullAllWith(array: T1[], values: List, comparator: Comparator2): T1[]; /** * @see _.pullAllWith */ pullAllWith(array: List, values: List, comparator: Comparator2): List; } interface Collection { /** * @see _.pullAllWith */ pullAllWith(values?: List, comparator?: Comparator2): Collection; } interface CollectionChain { /** * @see _.pullAllWith */ pullAllWith(values?: List, comparator?: Comparator2): CollectionChain; } interface LoDashStatic { /** * Removes elements from array corresponding to the given indexes and returns an array of the removed elements. * Indexes may be specified as an array of indexes or as individual arguments. * * Note: Unlike _.at, this method mutates array. * * @param array The array to modify. * @param indexes The indexes of elements to remove, specified as individual indexes or arrays of indexes. * @return Returns the new array of removed elements. */ pullAt(array: T[], ...indexes: Array>): T[]; /** * @see _.pullAt */ pullAt(array: List, ...indexes: Array>): List; } interface Collection { /** * @see _.pullAt */ pullAt(...indexes: Array>): Collection; } interface CollectionChain { /** * @see _.pullAt */ pullAt(...indexes: Array>): CollectionChain; } interface LoDashStatic { /** * Removes all elements from array that predicate returns truthy for and returns an array of the removed * elements. The predicate is invoked with three arguments: (value, index, array). * * Note: Unlike _.filter, this method mutates array. * * @param array The array to modify. * @param predicate The function invoked per iteration. * @return Returns the new array of removed elements. */ remove(array: List, predicate?: ListIteratee): T[]; } interface Collection { /** * @see _.remove */ remove(predicate?: ListIteratee): Collection; } interface CollectionChain { /** * @see _.remove */ remove(predicate?: ListIteratee): CollectionChain; } interface LoDashStatic { /** * Reverses `array` so that the first element becomes the last, the second * element becomes the second to last, and so on. * * **Note:** This method mutates `array` and is based on * [`Array#reverse`](https://mdn.io/Array/reverse). * * @category Array * @returns Returns `array`. * @example * * var array = [1, 2, 3]; * * _.reverse(array); * // => [3, 2, 1] * * console.log(array); * // => [3, 2, 1] */ reverse>(array: TList): TList; } interface LoDashStatic { /** * Creates a slice of array from start up to, but not including, end. * * @param array The array to slice. * @param start The start position. * @param end The end position. * @return Returns the slice of array. */ slice(array: List | null | undefined, start?: number, end?: number): T[]; } interface Collection { /** * @see _.slice */ slice(start?: number, end?: number): Collection; } interface CollectionChain { /** * @see _.slice */ slice(start?: number, end?: number): CollectionChain; } interface LoDashStatic { /** * Uses a binary search to determine the lowest index at which `value` should * be inserted into `array` in order to maintain its sort order. * * @category Array * @param array The sorted array to inspect. * @param value The value to evaluate. * @returns Returns the index at which `value` should be inserted into `array`. * @example * * _.sortedIndex([30, 50], 40); * // => 1 * * _.sortedIndex([4, 5], 4); * // => 0 */ sortedIndex(array: List | null | undefined, value: T): number; } interface Collection { /** * @see _.sortedIndex */ sortedIndex(value: T): number; } interface CollectionChain { /** * @see _.sortedIndex */ sortedIndex(value: T): PrimitiveChain; } interface LoDashStatic { /** * Uses a binary search to determine the lowest index at which `value` should * be inserted into `array` in order to maintain its sort order. * * @category Array * @param array The sorted array to inspect. * @param value The value to evaluate. * @returns Returns the index at which `value` should be inserted into `array`. * @example * * _.sortedIndex([30, 50], 40); * // => 1 * * _.sortedIndex([4, 5], 4); * // => 0 */ sortedIndex(array: List | null | undefined, value: T): number; } interface Collection { /** * @see _.sortedIndex */ sortedIndex(value: T): number; } interface CollectionChain { /** * @see _.sortedIndex */ sortedIndex(value: T): PrimitiveChain; } interface LoDashStatic { /** * This method is like `_.sortedIndex` except that it accepts `iteratee` * which is invoked for `value` and each element of `array` to compute their * sort ranking. The iteratee is invoked with one argument: (value). * * @category Array * @param array The sorted array to inspect. * @param value The value to evaluate. * @param [iteratee=_.identity] The iteratee invoked per element. * @returns Returns the index at which `value` should be inserted into `array`. * @example * * var dict = { 'thirty': 30, 'forty': 40, 'fifty': 50 }; * * _.sortedIndexBy(['thirty', 'fifty'], 'forty', _.propertyOf(dict)); * // => 1 * * // using the `_.property` iteratee shorthand * _.sortedIndexBy([{ 'x': 4 }, { 'x': 5 }], { 'x': 4 }, 'x'); * // => 0 */ sortedIndexBy(array: List | null | undefined, value: T, iteratee?: ValueIteratee): number; } interface Collection { /** * @see _.sortedIndexBy */ sortedIndexBy(value: T, iteratee?: ValueIteratee): number; } interface CollectionChain { /** * @see _.sortedIndexBy */ sortedIndexBy(value: T, iteratee?: ValueIteratee): PrimitiveChain; } interface LoDashStatic { /** * This method is like `_.indexOf` except that it performs a binary * search on a sorted `array`. * * @category Array * @param array The array to search. * @param value The value to search for. * @returns Returns the index of the matched value, else `-1`. * @example * * _.sortedIndexOf([1, 1, 2, 2], 2); * // => 2 */ sortedIndexOf(array: List | null | undefined, value: T): number; } interface Collection { /** * @see _.sortedIndexOf */ sortedIndexOf(value: T): number; } interface CollectionChain { /** * @see _.sortedIndexOf */ sortedIndexOf(value: T): PrimitiveChain; } interface LoDashStatic { /** * This method is like `_.sortedIndex` except that it returns the highest * index at which `value` should be inserted into `array` in order to * maintain its sort order. * * @category Array * @param array The sorted array to inspect. * @param value The value to evaluate. * @returns Returns the index at which `value` should be inserted into `array`. * @example * * _.sortedLastIndex([4, 5], 4); * // => 1 */ sortedLastIndex(array: List | null | undefined, value: T): number; } interface Collection { /** * @see _.sortedLastIndex */ sortedLastIndex(value: T): number; } interface CollectionChain { /** * @see _.sortedLastIndex */ sortedLastIndex(value: T): PrimitiveChain; } interface LoDashStatic { /** * This method is like `_.sortedLastIndex` except that it accepts `iteratee` * which is invoked for `value` and each element of `array` to compute their * sort ranking. The iteratee is invoked with one argument: (value). * * @category Array * @param array The sorted array to inspect. * @param value The value to evaluate. * @param [iteratee=_.identity] The iteratee invoked per element. * @returns Returns the index at which `value` should be inserted into `array`. * @example * * // using the `_.property` iteratee shorthand * _.sortedLastIndexBy([{ 'x': 4 }, { 'x': 5 }], { 'x': 4 }, 'x'); * // => 1 */ sortedLastIndexBy(array: List | null | undefined, value: T, iteratee: ValueIteratee): number; } interface Collection { /** * @see _.sortedLastIndexBy */ sortedLastIndexBy(value: T, iteratee: ValueIteratee): number; } interface CollectionChain { /** * @see _.sortedLastIndexBy */ sortedLastIndexBy(value: T, iteratee: ValueIteratee): PrimitiveChain; } interface LoDashStatic { /** * This method is like `_.lastIndexOf` except that it performs a binary * search on a sorted `array`. * * @category Array * @param array The array to search. * @param value The value to search for. * @returns Returns the index of the matched value, else `-1`. * @example * * _.sortedLastIndexOf([1, 1, 2, 2], 2); * // => 3 */ sortedLastIndexOf(array: List | null | undefined, value: T): number; } interface Collection { /** * @see _.sortedLastIndexOf */ sortedLastIndexOf(value: T): number; } interface CollectionChain { /** * @see _.sortedLastIndexOf */ sortedLastIndexOf(value: T): PrimitiveChain; } interface LoDashStatic { /** * This method is like `_.uniq` except that it's designed and optimized * for sorted arrays. * * @category Array * @param array The array to inspect. * @returns Returns the new duplicate free array. * @example * * _.sortedUniq([1, 1, 2]); * // => [1, 2] */ sortedUniq(array: List | null | undefined): T[]; } interface Collection { /** * @see _.sortedUniq */ sortedUniq(): Collection; } interface CollectionChain { /** * @see _.sortedUniq */ sortedUniq(): CollectionChain; } interface LoDashStatic { /** * This method is like `_.uniqBy` except that it's designed and optimized * for sorted arrays. * * @category Array * @param array The array to inspect. * @param [iteratee] The iteratee invoked per element. * @returns Returns the new duplicate free array. * @example * * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor); * // => [1.1, 2.3] */ sortedUniqBy(array: List | null | undefined, iteratee: ValueIteratee): T[]; } interface Collection { /** * @see _.sortedUniqBy */ sortedUniqBy(iteratee: ValueIteratee): Collection; } interface CollectionChain { /** * @see _.sortedUniqBy */ sortedUniqBy(iteratee: ValueIteratee): CollectionChain; } interface LoDashStatic { /** * Gets all but the first element of array. * * @param array The array to query. * @return Returns the slice of array. */ tail(array: List | null | undefined): T[]; } interface Collection { /** * @see _.tail */ tail(): Collection; } interface CollectionChain { /** * @see _.tail */ tail(): CollectionChain; } interface LoDashStatic { /** * Creates a slice of array with n elements taken from the beginning. * * @param array The array to query. * @param n The number of elements to take. * @return Returns the slice of array. */ take(array: List | null | undefined, n?: number): T[]; } interface Collection { /** * @see _.take */ take(n?: number): Collection; } interface CollectionChain { /** * @see _.take */ take(n?: number): CollectionChain; } interface LoDashStatic { /** * Creates a slice of array with n elements taken from the end. * * @param array The array to query. * @param n The number of elements to take. * @return Returns the slice of array. */ takeRight(array: List | null | undefined, n?: number): T[]; } interface Collection { /** * @see _.takeRight */ takeRight(n?: number): Collection; } interface CollectionChain { /** * @see _.takeRight */ takeRight(n?: number): CollectionChain; } interface LoDashStatic { /** * Creates a slice of array with elements taken from the end. Elements are taken until predicate returns * falsey. The predicate is invoked with three arguments: (value, index, array). * * @param array The array to query. * @param predicate The function invoked per iteration. * @return Returns the slice of array. */ takeRightWhile(array: List | null | undefined, predicate?: ListIteratee): T[]; } interface Collection { /** * @see _.takeRightWhile */ takeRightWhile(predicate?: ListIteratee): Collection; } interface CollectionChain { /** * @see _.takeRightWhile */ takeRightWhile(predicate?: ListIteratee): CollectionChain; } interface LoDashStatic { /** * Creates a slice of array with elements taken from the beginning. Elements are taken until predicate returns * falsey. The predicate is invoked with three arguments: (value, index, array). * * @param array The array to query. * @param predicate The function invoked per iteration. * @return Returns the slice of array. */ takeWhile(array: List | null | undefined, predicate?: ListIteratee): T[]; } interface Collection { /** * @see _.takeWhile */ takeWhile(predicate?: ListIteratee): Collection; } interface CollectionChain { /** * @see _.takeWhile */ takeWhile(predicate?: ListIteratee): CollectionChain; } interface LoDashStatic { /** * Creates an array of unique values, in order, from all of the provided arrays using SameValueZero for * equality comparisons. * * @param arrays The arrays to inspect. * @return Returns the new array of combined values. */ union(...arrays: Array | null | undefined>): T[]; } interface Collection { /** * @see _.union */ union(...arrays: Array | null | undefined>): Collection; } interface CollectionChain { /** * @see _.union */ union(...arrays: Array | null | undefined>): CollectionChain; } interface LoDashStatic { /** * This method is like `_.union` except that it accepts `iteratee` which is * invoked for each element of each `arrays` to generate the criterion by which * uniqueness is computed. The iteratee is invoked with one argument: (value). * * @param arrays The arrays to inspect. * @param iteratee The iteratee invoked per element. * @return Returns the new array of combined values. */ unionBy(arrays: List | null | undefined, iteratee?: ValueIteratee): T[]; /** * @see _.unionBy */ unionBy(arrays1: List | null | undefined, arrays2: List | null | undefined, iteratee?: ValueIteratee): T[]; /** * @see _.unionBy */ unionBy(arrays1: List | null | undefined, arrays2: List | null | undefined, arrays3: List | null | undefined, iteratee?: ValueIteratee): T[]; /** * @see _.unionBy */ unionBy(arrays1: List | null | undefined, arrays2: List | null | undefined, arrays3: List | null | undefined, arrays4: List | null | undefined, iteratee?: ValueIteratee): T[]; /** * @see _.unionBy */ unionBy(arrays1: List | null | undefined, arrays2: List | null | undefined, arrays3: List | null | undefined, arrays4: List | null | undefined, arrays5: List | null | undefined, ...iteratee: Array | List | null | undefined>): T[]; } interface Collection { /** * @see _.unionBy */ unionBy(arrays2: List | null | undefined, iteratee?: ValueIteratee): Collection; /** * @see _.unionBy */ unionBy(...iteratee: Array | List | null | undefined>): Collection; } interface CollectionChain { /** * @see _.unionBy */ unionBy(arrays2: List | null | undefined, iteratee?: ValueIteratee): CollectionChain; /** * @see _.unionBy */ unionBy(...iteratee: Array | List | null | undefined>): CollectionChain; } interface LoDashStatic { /** * This method is like `_.union` except that it accepts `comparator` which * is invoked to compare elements of `arrays`. The comparator is invoked * with two arguments: (arrVal, othVal). * * @category Array * @param [arrays] The arrays to inspect. * @param [comparator] The comparator invoked per element. * @returns Returns the new array of combined values. * @example * * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; * * _.unionWith(objects, others, _.isEqual); * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] */ unionWith(arrays: List | null | undefined, comparator?: Comparator): T[]; /** * @see _.unionWith */ unionWith(arrays: List | null | undefined, arrays2: List | null | undefined, comparator?: Comparator): T[]; /** * @see _.unionWith */ unionWith(arrays: List | null | undefined, arrays2: List | null | undefined, arrays3: List | null | undefined, ...comparator: Array | List | null | undefined>): T[]; } interface Collection { /** * @see _.unionWith */ unionWith(arrays2: List | null | undefined, comparator?: Comparator): Collection; /** * @see _.unionWith */ unionWith(...comparator: Array | List | null | undefined>): Collection; } interface CollectionChain { /** * @see _.unionWith */ unionWith(arrays2: List | null | undefined, comparator?: Comparator): CollectionChain; /** * @see _.unionWith */ unionWith(...comparator: Array | List | null | undefined>): CollectionChain; } interface LoDashStatic { /** * Creates a duplicate-free version of an array, using * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) * for equality comparisons, in which only the first occurrence of each element * is kept. * * @category Array * @param array The array to inspect. * @returns Returns the new duplicate free array. * @example * * _.uniq([2, 1, 2]); * // => [2, 1] */ uniq(array: List | null | undefined): T[]; } interface Collection { /** * @see _.uniq */ uniq(): Collection; } interface CollectionChain { /** * @see _.uniq */ uniq(): CollectionChain; } interface LoDashStatic { /** * This method is like `_.uniq` except that it accepts `iteratee` which is * invoked for each element in `array` to generate the criterion by which * uniqueness is computed. The iteratee is invoked with one argument: (value). * * @category Array * @param array The array to inspect. * @param [iteratee=_.identity] The iteratee invoked per element. * @returns Returns the new duplicate free array. * @example * * _.uniqBy([2.1, 1.2, 2.3], Math.floor); * // => [2.1, 1.2] * * // using the `_.property` iteratee shorthand * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); * // => [{ 'x': 1 }, { 'x': 2 }] */ uniqBy(array: List | null | undefined, iteratee: ValueIteratee): T[]; } interface Collection { /** * @see _.uniqBy */ uniqBy(iteratee: ValueIteratee): Collection; } interface CollectionChain { /** * @see _.uniqBy */ uniqBy(iteratee: ValueIteratee): CollectionChain; } interface LoDashStatic { /** * This method is like `_.uniq` except that it accepts `comparator` which * is invoked to compare elements of `array`. The comparator is invoked with * two arguments: (arrVal, othVal). * * @category Array * @param array The array to inspect. * @param [comparator] The comparator invoked per element. * @returns Returns the new duplicate free array. * @example * * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }]; * * _.uniqWith(objects, _.isEqual); * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }] */ uniqWith(array: List | null | undefined, comparator?: Comparator): T[]; } interface Collection { /** * @see _.uniqWith */ uniqWith(comparator?: Comparator): Collection; } interface CollectionChain { /** * @see _.uniqWith */ uniqWith(comparator?: Comparator): CollectionChain; } interface LoDashStatic { /** * This method is like _.zip except that it accepts an array of grouped elements and creates an array * regrouping the elements to their pre-zip configuration. * * @param array The array of grouped elements to process. * @return Returns the new array of regrouped elements. */ unzip(array: T[][] | List> | null | undefined): T[][]; } interface Collection { /** * @see _.unzip */ unzip(): T extends List ? Collection : unknown; } interface CollectionChain { /** * @see _.unzip */ unzip(): T extends List ? CollectionChain : unknown; } interface LoDashStatic { /** * This method is like _.unzip except that it accepts an iteratee to specify how regrouped values should be * combined. The iteratee is invoked with four arguments: (accumulator, value, index, group). * * @param array The array of grouped elements to process. * @param iteratee The function to combine regrouped values. * @return Returns the new array of regrouped elements. */ unzipWith(array: List> | null | undefined, iteratee: (...values: T[]) => TResult): TResult[]; /** * @see _.unzipWith */ unzipWith(array: List> | null | undefined): T[][]; } interface Collection { /** * @see _.unzipWith */ unzipWith(iteratee: (...values: Array ? U : unknown>) => TResult): Collection; /** * @see _.unzipWith */ unzipWith(): T extends List ? Collection : unknown; } interface CollectionChain { /** * @see _.unzipWith */ unzipWith(iteratee: (...values: Array ? U : unknown>) => TResult): CollectionChain; /** * @see _.unzipWith */ unzipWith(): T extends List ? CollectionChain : unknown; } interface LoDashStatic { /** * Creates an array excluding all provided values using SameValueZero for equality comparisons. * * @param array The array to filter. * @param values The values to exclude. * @return Returns the new array of filtered values. */ without(array: List | null | undefined, ...values: T[]): T[]; } interface Collection { /** * @see _.without */ without(...values: T[]): Collection; } interface CollectionChain { /** * @see _.without */ without(...values: T[]): CollectionChain; } interface LoDashStatic { /** * Creates an array of unique values that is the symmetric difference of the provided arrays. * * @param arrays The arrays to inspect. * @return Returns the new array of values. */ xor(...arrays: Array | null | undefined>): T[]; } interface Collection { /** * @see _.xor */ xor(...arrays: Array | null | undefined>): Collection; } interface CollectionChain { /** * @see _.xor */ xor(...arrays: Array | null | undefined>): CollectionChain; } interface LoDashStatic { /** * This method is like `_.xor` except that it accepts `iteratee` which is * invoked for each element of each `arrays` to generate the criterion by which * uniqueness is computed. The iteratee is invoked with one argument: (value). * * @category Array * @param [arrays] The arrays to inspect. * @param [iteratee=_.identity] The iteratee invoked per element. * @returns Returns the new array of values. * @example * * _.xorBy([2.1, 1.2], [4.3, 2.4], Math.floor); * // => [1.2, 4.3] * * // using the `_.property` iteratee shorthand * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); * // => [{ 'x': 2 }] */ xorBy(arrays: List | null | undefined, iteratee?: ValueIteratee): T[]; /** * @see _.xorBy */ xorBy(arrays: List | null | undefined, arrays2: List | null | undefined, iteratee?: ValueIteratee): T[]; /** * @see _.xorBy */ xorBy(arrays: List | null | undefined, arrays2: List | null | undefined, arrays3: List | null | undefined, ...iteratee: Array | List | null | undefined>): T[]; } interface Collection { /** * @see _.xorBy */ xorBy(arrays2: List | null | undefined, iteratee?: ValueIteratee): Collection; /** * @see _.xorBy */ xorBy(...iteratee: Array | List | null | undefined>): Collection; } interface CollectionChain { /** * @see _.xorBy */ xorBy(arrays2: List | null | undefined, iteratee?: ValueIteratee): CollectionChain; /** * @see _.xorBy */ xorBy(...iteratee: Array | List | null | undefined>): CollectionChain; } interface LoDashStatic { /** * This method is like `_.xor` except that it accepts `comparator` which is * invoked to compare elements of `arrays`. The comparator is invoked with * two arguments: (arrVal, othVal). * * @category Array * @param [arrays] The arrays to inspect. * @param [comparator] The comparator invoked per element. * @returns Returns the new array of values. * @example * * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; * * _.xorWith(objects, others, _.isEqual); * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] */ xorWith(arrays: List | null | undefined, comparator?: Comparator): T[]; /** * @see _.xorWith */ xorWith(arrays: List | null | undefined, arrays2: List | null | undefined, comparator?: Comparator): T[]; /** * @see _.xorWith */ xorWith(arrays: List | null | undefined, arrays2: List | null | undefined, arrays3: List | null | undefined, ...comparator: Array | List | null | undefined>): T[]; } interface Collection { /** * @see _.xorWith */ xorWith(arrays2: List | null | undefined, comparator?: Comparator): Collection; /** * @see _.xorWith */ xorWith(...comparator: Array | List | null | undefined>): Collection; } interface CollectionChain { /** * @see _.xorWith */ xorWith(arrays2: List | null | undefined, comparator?: Comparator): CollectionChain; /** * @see _.xorWith */ xorWith(...comparator: Array | List | null | undefined>): CollectionChain; } interface LoDashStatic { /** * Creates an array of grouped elements, the first of which contains the first elements of the given arrays, * the second of which contains the second elements of the given arrays, and so on. * * @param arrays The arrays to process. * @return Returns the new array of grouped elements. */ zip(arrays1: List, arrays2: List): Array<[T1 | undefined, T2 | undefined]>; /** * @see _.zip */ zip(arrays1: List, arrays2: List, arrays3: List): Array<[T1 | undefined, T2 | undefined, T3 | undefined]>; /** * @see _.zip */ zip(arrays1: List, arrays2: List, arrays3: List, arrays4: List): Array<[T1 | undefined, T2 | undefined, T3 | undefined, T4 | undefined]>; /** * @see _.zip */ zip(arrays1: List, arrays2: List, arrays3: List, arrays4: List, arrays5: List): Array<[T1 | undefined, T2 | undefined, T3 | undefined, T4 | undefined, T5 | undefined]>; /** * @see _.zip */ zip(...arrays: Array | null | undefined>): Array>; } interface Collection { /** * @see _.zip */ zip(arrays2: List): Collection<[T | undefined, T2 | undefined]>; /** * @see _.zip */ zip(...arrays: Array | null | undefined>): Collection>; } interface CollectionChain { /** * @see _.zip */ zip(arrays2: List): CollectionChain<[T | undefined, T2 | undefined]>; /** * @see _.zip */ zip(...arrays: Array | null | undefined>): CollectionChain>; } interface LoDashStatic { /** * This method is like _.fromPairs except that it accepts two arrays, one of property * identifiers and one of corresponding values. * * @param props The property names. * @param values The property values. * @return Returns the new object. */ zipObject(props: List, values: List): Dictionary; /** * @see _.zipObject */ zipObject(props?: List): Dictionary; } interface Collection { /** * @see _.zipObject */ zipObject(values: List): Object>; /** * @see _.zipObject */ zipObject(): Object>; } interface CollectionChain { /** * @see _.zipObject */ zipObject(values: List): ObjectChain>; /** * @see _.zipObject */ zipObject(): ObjectChain>; } interface LoDashStatic { /** * This method is like _.zipObject except that it supports property paths. * * @param paths The property names. * @param values The property values. * @return Returns the new object. */ zipObjectDeep(paths?: List, values?: List): object; } interface Collection { /** * @see _.zipObjectDeep */ zipObjectDeep(values?: List): Object; } interface CollectionChain { /** * @see _.zipObjectDeep */ zipObjectDeep(values?: List): ObjectChain; } interface LoDashStatic { /** * This method is like _.zip except that it accepts an iteratee to specify how grouped values should be * combined. The iteratee is invoked with four arguments: (accumulator, value, index, * group). * @param arrays The arrays to process. * @param iteratee The function to combine grouped values. * @return Returns the new array of grouped elements. */ zipWith(arrays: List, iteratee: (value1: T) => TResult): TResult[]; /** * @see _.zipWith */ zipWith(arrays1: List, arrays2: List, iteratee: (value1: T1, value2: T2) => TResult): TResult[]; /** * @see _.zipWith */ zipWith(arrays1: List, arrays2: List, arrays3: List, iteratee: (value1: T1, value2: T2, value3: T3) => TResult): TResult[]; /** * @see _.zipWith */ zipWith(arrays1: List, arrays2: List, arrays3: List, arrays4: List, iteratee: (value1: T1, value2: T2, value3: T3, value4: T4) => TResult): TResult[]; /** * @see _.zipWith */ zipWith(arrays1: List, arrays2: List, arrays3: List, arrays4: List, arrays5: List, iteratee: (value1: T1, value2: T2, value3: T3, value4: T4, value5: T5) => TResult): TResult[]; /** * @see _.zipWith */ zipWith(...iteratee: Array<((...group: T[]) => TResult) | List | null | undefined>): TResult[]; } interface Collection { /** * @see _.zipWith */ zipWith(arrays2: List, iteratee: (value1: T, value2: T2) => TResult): Collection; /** * @see _.zipWith */ zipWith(arrays2: List, arrays3: List, iteratee: (value1: T, value2: T2, value3: T3) => TResult): Collection; /** * @see _.zipWith */ zipWith(...iteratee: Array<((...group: T[]) => TResult) | List | null | undefined>): Collection; } interface CollectionChain { /** * @see _.zipWith */ zipWith(arrays2: List, iteratee: (value1: T, value2: T2) => TResult): CollectionChain; /** * @see _.zipWith */ zipWith(arrays2: List, arrays3: List, iteratee: (value1: T, value2: T2, value3: T3) => TResult): CollectionChain; /** * @see _.zipWith */ zipWith(...iteratee: Array<((...group: T[]) => TResult) | List | null | undefined>): CollectionChain; } }