Merge pull request #6216 from chrootsu/lodash-flattenDeep

lodash: changed signatures of the method _.flattenDeep
This commit is contained in:
Masahiro Wakame
2015-10-13 00:24:14 +09:00
2 changed files with 62 additions and 14 deletions

View File

@@ -412,14 +412,40 @@ result = <Array<number>>_.flatten([1, [2], [[3]]], true);
result = <Array<number>>_.flatten<number>([1, [2], [3, [[4]]]], true);
result = <Array<number|boolean>>_.flatten<number|boolean>([1, [2], [3, [[false]]]], true);
result = <Array<number>>_.flattenDeep<number>([[[[1]]]]);
result = <_.LoDashArrayWrapper<number>>_([[1, 2], [3, 4], 5, 6]).flatten();
result = <_.LoDashArrayWrapper<number|Array<Array<number>>>>_([1, [2], [3, [[4]]]]).flatten();
result = <_.LoDashArrayWrapper<number>>_([1, [2], [3, [[4]]]]).flatten(true);
result = <_.LoDashArrayWrapper<number>>_([1, [2], [3, [[4]]]]).flattenDeep();
// _.flattenDeep
module TestFlattenDeep {
interface RecursiveArray<T> extends Array<T|RecursiveArray<T>> {}
interface ListOfRecursiveArraysOrValues<T> extends _.List<T|RecursiveArray<T>> {}
interface RecursiveList<T> extends _.List<T|RecursiveList<T>> { }
let recursiveArray: RecursiveArray<TResult>;
let listOfMaybeRecursiveArraysOrValues: ListOfRecursiveArraysOrValues<TResult>;
let recursiveList: RecursiveList<TResult>;
{
let result: TResult[];
result = _.flattenDeep<TResult>(recursiveArray);
result = _.flattenDeep<TResult>(listOfMaybeRecursiveArraysOrValues);
result = _(recursiveArray).flattenDeep<TResult>().value();
result = _(listOfMaybeRecursiveArraysOrValues).flattenDeep<TResult>().value();
}
{
let result: any;
result = _.flattenDeep<TResult>(recursiveList);
result = _(recursiveList).flattenDeep().value();
}
}
// _.head
module TestHead {

44
lodash/lodash.d.ts vendored
View File

@@ -860,6 +860,8 @@ declare module _ {
}
interface MaybeNestedList<T> extends List<T|List<T>> { }
interface RecursiveArray<T> extends Array<T|RecursiveArray<T>> { }
interface ListOfRecursiveArraysOrValues<T> extends List<T|RecursiveArray<T>> { }
interface RecursiveList<T> extends List<T|RecursiveList<T>> { }
//_.flatten
@@ -886,16 +888,6 @@ declare module _ {
* @return `array` flattened.
**/
flatten<T>(array: RecursiveList<T>, isDeep: boolean): List<T> | RecursiveList<T>;
/**
* Recursively flattens a nested array.
*
* _.flattenDeep(x) is equivalent to _.flatten(x, true);
*
* @param array The array to flatten
* @return `array` recursively flattened
*/
flattenDeep<T>(array: RecursiveList<T>): List<T>
}
interface LoDashArrayWrapper<T> {
@@ -908,11 +900,41 @@ declare module _ {
* @see _.flatten
**/
flatten<T>(isShallow: boolean): LoDashArrayWrapper<any>;
}
//_.flattenDeep
interface LoDashStatic {
/**
* Recursively flattens a nested array.
*
* @param array The array to recursively flatten.
* @return Returns the new flattened array.
*/
flattenDeep<T>(array: RecursiveArray<T>): T[];
/**
* @see _.flattenDeep
*/
flattenDeep<T>(): LoDashArrayWrapper<any>;
flattenDeep<T>(array: ListOfRecursiveArraysOrValues<T>): T[];
/**
* @see _.flattenDeep
*/
flattenDeep<T>(array: RecursiveList<T>): any[];
}
interface LoDashArrayWrapper<T> {
/**
* @see _.flattenDeep
*/
flattenDeep<TResult>(): LoDashArrayWrapper<TResult>;
}
interface LoDashObjectWrapper<T> {
/**
* @see _.flattenDeep
*/
flattenDeep<TResult>(): LoDashArrayWrapper<TResult>;
}
//_.head