import { And, AndArr } from "./and"; import { IsAny } from "./any"; import { Extends, NotExtends } from "./extends"; import { Mutable } from "./mutable"; import { IsNever } from "./never"; import { Not } from "./not"; /** * Returns a boolean whether the passed argument is an array * @example * ```ts * // true * type Case1 = IsArray<[]> * // false * type Case2 = IsArray * ``` */ export type IsArray = AndArr< [Not>, Not>, Extends] >; /** * Returns a boolean whether the passed argument is a mutable array * @example * ```ts * // true * type Case1 = IsMutableArray<[]> * // false * type Case2 = IsMutableArray * ``` */ export type IsMutableArray = And, NotExtends, T>>; /** * Returns a boolean whether the passed argument is a read-only array * @example * ```ts * // true * type Case1 = IsReadonlyArray * // false * type Case2 = IsReadonlyArray<[]> * ``` */ export type IsReadonlyArray = And, NotExtends>>;