mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2026-10-03 22:37:03 +00:00
Fixed isArray type guards (#16077)
This commit is contained in:
Vendored
+38
-4
@@ -9604,7 +9604,6 @@ declare namespace _ {
|
||||
some<TResult>(
|
||||
predicate?: ListIterator<TResult, boolean>|DictionaryIterator<TResult, boolean>|NumericDictionaryIterator<T, boolean>|ObjectIterator<any, boolean>
|
||||
): boolean;
|
||||
|
||||
/**
|
||||
* @see _.some
|
||||
*/
|
||||
@@ -11990,7 +11989,12 @@ declare namespace _ {
|
||||
*
|
||||
* @return Returns true if value is correctly classified, else false.
|
||||
*/
|
||||
isArray<T>(value?: any): value is T[];
|
||||
isArray(value?: any): value is any[];
|
||||
|
||||
/**
|
||||
* DEPRECATED
|
||||
*/
|
||||
isArray<T>(value?: any): value is any[];
|
||||
}
|
||||
|
||||
interface LoDashImplicitWrapperBase<T, TWrapper> {
|
||||
@@ -12059,7 +12063,22 @@ declare namespace _ {
|
||||
* _.isArrayLike(_.noop);
|
||||
* // => false
|
||||
*/
|
||||
isArrayLike<T>(value?: any): value is T[];
|
||||
isArrayLike<T>(value: T & string & number): boolean; // should only match if T = any
|
||||
|
||||
/**
|
||||
* @see _.isArrayLike
|
||||
*/
|
||||
isArrayLike(value?: Function): value is never;
|
||||
|
||||
/**
|
||||
* @see _.isArrayLike
|
||||
*/
|
||||
isArrayLike<T>(value: T | Function): value is T & { length: number };
|
||||
|
||||
/**
|
||||
* DEPRECATED
|
||||
*/
|
||||
isArrayLike<T>(value?: any): value is any[];
|
||||
}
|
||||
|
||||
interface LoDashImplicitWrapperBase<T, TWrapper> {
|
||||
@@ -12102,7 +12121,22 @@ declare namespace _ {
|
||||
* _.isArrayLikeObject(_.noop);
|
||||
* // => false
|
||||
*/
|
||||
isArrayLikeObject<T>(value?: any): value is T[];
|
||||
isArrayLikeObject<T>(value: T & string & number): boolean; // should only match if T = any
|
||||
|
||||
/**
|
||||
* @see _.isArrayLike
|
||||
*/
|
||||
isArrayLikeObject(value?: Function | string | boolean | number): value is never;
|
||||
|
||||
/**
|
||||
* @see _.isArrayLike
|
||||
*/
|
||||
isArrayLikeObject<T>(value: T | Function | string | boolean | number): value is T & { length: number };
|
||||
|
||||
/**
|
||||
* DEPRECATED
|
||||
*/
|
||||
isArrayLikeObject<T>(value?: any): value is any[];
|
||||
}
|
||||
|
||||
interface LoDashImplicitWrapperBase<T, TWrapper> {
|
||||
|
||||
+107
-30
@@ -6892,18 +6892,13 @@ namespace TestisArguments {
|
||||
// _.isArray
|
||||
namespace TestIsArray {
|
||||
{
|
||||
let value: number|string[]|boolean[] = [];
|
||||
let value: number|string[]|boolean[] = any;
|
||||
|
||||
if (_.isArray<string>(value)) {
|
||||
let result: string[] = value;
|
||||
if (_.isArray(value)) {
|
||||
value; // $ExpectType boolean[] | string[]
|
||||
}
|
||||
else {
|
||||
if (_.isArray<boolean>(value)) {
|
||||
let result: boolean[] = value;
|
||||
}
|
||||
else {
|
||||
let result: number = value;
|
||||
}
|
||||
value; // $ExpectType number
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6928,13 +6923,13 @@ namespace TestIsArray {
|
||||
// _.isArrayBuffer
|
||||
namespace TestIsArrayBuffer {
|
||||
{
|
||||
let value: ArrayBuffer|number = 0;
|
||||
let value: ArrayBuffer|number = any;
|
||||
|
||||
if (_.isArrayBuffer(value)) {
|
||||
let result: ArrayBuffer = value;
|
||||
value; // $ExpectType ArrayBuffer
|
||||
}
|
||||
else {
|
||||
let result: number = value;
|
||||
value; // $ExpectType number
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6959,18 +6954,59 @@ namespace TestIsArrayBuffer {
|
||||
// _.isArrayLike
|
||||
namespace TestIsArrayLike {
|
||||
{
|
||||
let value: number|string[]|boolean[] = [];
|
||||
let value: string | string[] | { [index: number]: boolean, length: number } | [number, boolean]
|
||||
| number | Function | { length: string } | { a: string }
|
||||
= any;
|
||||
|
||||
if (_.isArrayLike<string>(value)) {
|
||||
let result: string[] = value;
|
||||
if (_.isArrayLike(value)) {
|
||||
let result: string | string[] | { [index: number]: boolean, length: number } | [number, boolean] = value;
|
||||
}
|
||||
else {
|
||||
if (_.isArrayLike<boolean>(value)) {
|
||||
let result: boolean[] = value;
|
||||
}
|
||||
else {
|
||||
let result: number = value;
|
||||
}
|
||||
let result: number | Function | { length: string } | { a: string; } = value;
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
let value: boolean[] = any;
|
||||
|
||||
if (_.isArrayLike(value)) {
|
||||
let result: boolean[] = value;
|
||||
}
|
||||
else {
|
||||
value; // $ExpectType never
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
let value: Function = any;
|
||||
|
||||
if (_.isArrayLike(value)) {
|
||||
value; // $ExpectType never
|
||||
}
|
||||
else {
|
||||
value; // $ExpectType Function
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
let value: { a: string } = any;
|
||||
|
||||
if (_.isArrayLike(value)) {
|
||||
let result: { a: string, length: number } = value;
|
||||
}
|
||||
else {
|
||||
value; // $ExpectType { a: string; }
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
let value: any = any;
|
||||
|
||||
if (_.isArrayLike(value)) {
|
||||
value; // $ExpectType any
|
||||
}
|
||||
else {
|
||||
value; // $ExpectType any
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6995,18 +7031,59 @@ namespace TestIsArrayLike {
|
||||
// _.isArrayLikeObject
|
||||
namespace TestIsArrayLikeObject {
|
||||
{
|
||||
let value: number|string[]|boolean[] = [];
|
||||
let value: string[] | { [index: number]: boolean, length: number } | [number, boolean]
|
||||
| number | string | Function | { length: string } | { a: string }
|
||||
= any;
|
||||
|
||||
if (_.isArrayLikeObject<string>(value)) {
|
||||
let result: string[] = value;
|
||||
if (_.isArrayLikeObject(value)) {
|
||||
let result: string[] | { [index: number]: boolean, length: number } | [number, boolean] = value;
|
||||
}
|
||||
else {
|
||||
if (_.isArrayLikeObject<boolean>(value)) {
|
||||
let result: boolean[] = value;
|
||||
}
|
||||
else {
|
||||
let result: number = value;
|
||||
}
|
||||
let result: string | number | Function | { length: string; } | { a: string; } = value;
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
let value: boolean[] = any;
|
||||
|
||||
if (_.isArrayLikeObject(value)) {
|
||||
let result: boolean[] = value;
|
||||
}
|
||||
else {
|
||||
value; // $ExpectType never
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
let value: string | Function = any;
|
||||
|
||||
if (_.isArrayLikeObject(value)) {
|
||||
value; // $ExpectType never
|
||||
}
|
||||
else {
|
||||
value; // $ExpectType string | Function
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
let value: { a: string } = any;
|
||||
|
||||
if (_.isArrayLikeObject(value)) {
|
||||
let result: { a: string, length: number } = value;
|
||||
}
|
||||
else {
|
||||
value; // $ExpectType { a: string; }
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
let value: any = any;
|
||||
|
||||
if (_.isArrayLikeObject(value)) {
|
||||
value; // $ExpectType any
|
||||
}
|
||||
else {
|
||||
value; // $ExpectType any
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user