UNPKG

@kakasoo/proto-typescript

Version:

Utility types and implementations based on JavaScript prototypes.

73 lines 3.53 kB
import { ArrayType, Equal, NumberType } from '../types'; import { Primitive, ReadonlyOrNot } from '../types/primitive.type'; export declare namespace ArrayPrototype { /** * @param container * @param predicate * @example * ```ts * const answer = ArrayPrototype.filter<[1, 2, 3, 4, 5], 2>([1, 2, 3, 4, 5] as const, (el: any): el is 2 => el === 2); * const answer = ArrayPrototype.filter([1, 2, 3, 4, 5] as const, (el: any): el is 3 => el === 3); * ``` * @returns */ function filter<Container extends ReadonlyOrNot<any[]>, Target = any>(container: Container, predicate: ArrayType.TypePredicate<Container, Target>): ArrayType.Filter<Container, Target>; /** * Filter `null` or `undefined` element of Array Container. * @param container * @param predicate filtering options * @returns */ function filterNullish<Container extends ReadonlyOrNot<any[]>, FilterNull extends boolean, FilterUndefined extends boolean>(container: Container, predicate: { filterNull: FilterNull; filterUndefined: FilterUndefined; }): ArrayType.FilterNullish<Container, FilterNull, FilterUndefined>; /** * It only returns the 0th index without subtracting the elements inside the actual container. * @param conatiner * @returns */ function shift<Container extends ReadonlyOrNot<any[]>>(conatiner: Container): ArrayType.At<Container, 0>; /** * Only return the last index without subtracting the elements inside the actual container. * @param conatiner * @returns */ function pop<Container extends ReadonlyOrNot<any[]>>(conatiner: Container): ArrayType.At<Container, NumberType.Sub<ArrayType.Length<Container>, 1>>; /** * @param container * @param items * @returns */ function unshift<Container extends ReadonlyOrNot<any[]>, Items extends ReadonlyOrNot<any[]>>(container: Container, ...items: Items): ArrayType.Concat<Items, Container>; /** * @todo add paramter of this method, named `thisArg`. * * @param container * @param predicate * @returns */ function some<Container extends ReadonlyOrNot<any[]>, Target = any>(container: Container, predicate: ArrayType.TypePredicate<Container, Target>, thisArg?: any): Equal<Target, unknown> extends true ? boolean : Equal<Target, any> extends true ? boolean : ArrayType.Includes<Container, Target>; /** * @param container * @param items * @returns */ function push<Container extends ReadonlyOrNot<any[]>, Items extends ReadonlyOrNot<any[]>>(container: Container, ...items: Items): ArrayType.Concat<Container, Items>; /** * @param container */ function at<Container extends ReadonlyOrNot<any[]>, Index extends number>(container: Container, index: Index): ArrayType.At<Container, Index>; /** * type-safe join. * @example ArrayPrototype.join(["a", "b"]); * @example ArrayPrototype.join(["a", "b"] as const); * * @param container * @param separator A string used to separate one element of the array from the next in the resulting string. If omitted, the array elements are separated with a comma. * * @todo support bigint type (es2020) as element of Array. */ function join<Container extends ReadonlyOrNot<Exclude<Primitive, symbol>[]>, Separator extends string = ','>(container: Container, separator?: Separator): ArrayType.Join<Container, Separator>; } //# sourceMappingURL=array.prototype.d.ts.map