@effect-ts/system
Version:
Effect-TS is a zero dependency set of libraries to write highly productive, purely functional TypeScript at scale.
81 lines • 2.87 kB
TypeScript
import * as Tp from "../../../Structural/index.js";
import type { ForcedArray } from "../../../Utils/index.js";
export declare const TupleSym: unique symbol;
export declare type TupleSym = typeof TupleSym;
export declare function isTuple(self: unknown): self is Tuple<unknown[]>;
export declare class Tuple<T extends readonly unknown[]> implements Iterable<T[number]> {
readonly tuple: T;
[TupleSym](): TupleSym;
constructor(tuple: T);
[Symbol.iterator](): IterableIterator<T[number]>;
get [Tp.hashSym](): number;
[Tp.equalsSym](that: unknown): boolean;
get<K extends keyof T>(i: K): T[K];
}
/**
* Creates a new Tuple
*/
export declare function tuple<Ks extends unknown[]>(...args: Ks): Tuple<Ks>;
/**
* Gets an element from the tuple
*
* @ets_data_first get_
*/
export declare function get<Ks extends unknown[], I extends keyof Ks>(i: I): (self: Tuple<Ks>) => Ks[I];
/**
* Gets an element from the tuple
*/
export declare function get_<Ks extends unknown[], I extends keyof Ks>(self: Tuple<Ks>, i: I): Ks[I];
/**
* Converts to native tuple type
*/
export declare function toNative<Ks extends readonly unknown[]>(self: Tuple<Ks>): Ks;
/**
* Converts from native tuple type
*/
export declare function fromNative<Ks extends readonly unknown[]>(self: Ks): Tuple<Ks>;
/**
* Replaces the element in position I
*
* @ets_data_first update_
*/
export declare function update<Ks extends readonly unknown[], I extends keyof Ks & number, J>(i: I, f: (_: Ks[I]) => J): (self: Tuple<Ks>) => Tuple<ForcedArray<{
[k in keyof Ks]: k extends `${I}` ? J : Ks[k];
}>>;
/**
* Replaces the element in position I
*/
export declare function update_<Ks extends readonly unknown[], I extends keyof Ks & number, J>(self: Tuple<Ks>, i: I, f: (_: Ks[I]) => J): Tuple<ForcedArray<{
[k in keyof Ks]: k extends `${I}` ? J : Ks[k];
}>>;
/**
* Appends a value to a tuple
*
* @ets_data_first append_
*/
export declare function append<K>(k: K): <Ks extends unknown[]>(self: Tuple<Ks>) => Tuple<[...Ks, K]>;
/**
* Appends a value to a tuple
*/
export declare function append_<Ks extends unknown[], K>(self: Tuple<Ks>, k: K): Tuple<[...Ks, K]>;
/**
* Appends a value to a tuple
*
* @ets_data_first prepend_
*/
export declare function prepend<K>(k: K): <Ks extends unknown[]>(self: Tuple<Ks>) => Tuple<[K, ...Ks]>;
/**
* Prepends a value to a tuple
*/
export declare function prepend_<Ks extends unknown[], K>(self: Tuple<Ks>, k: K): Tuple<[K, ...Ks]>;
/**
* Concat tuples
*
* @ets_data_first concat_
*/
export declare function concat<Hs extends unknown[]>(that: Tuple<Hs>): <Ks extends unknown[]>(self: Tuple<Ks>) => Tuple<[...Ks, ...Hs]>;
/**
* Concat tuples
*/
export declare function concat_<Ks extends unknown[], Hs extends unknown[]>(self: Tuple<Ks>, that: Tuple<Hs>): Tuple<[...Ks, ...Hs]>;
//# sourceMappingURL=index.d.ts.map