@kakasoo/proto-typescript
Version:
Utility types and implementations based on JavaScript prototypes.
73 lines • 3.53 kB
TypeScript
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