<
const T extends ReadonlyArray<unknown>,
const M extends { readonly [I in keyof T]?: `${keyof T & string}` }
>(
mapping: M
): (self: T) => {
[I in keyof T]: I extends keyof M
? M[I] extends keyof T
? T[M[I]]
: T[I]
: T[I]
}
<
const T extends ReadonlyArray<unknown>,
const M extends { readonly [I in keyof T]?: `${keyof T & string}` }
>(
self: T,
mapping: M
): {
[I in keyof T]: I extends keyof M
? M[I] extends keyof T
? T[M[I]]
: T[I]
: T[I]
}Renames tuple indices by providing an array of stringified source
indices. Each position in the array specifies which index to read from
(e.g., ["2", "1", "0"] reverses a 3-element tuple).
When to use
Use to reorder tuple elements while preserving index-specific types.
Details
The mapping returns a tuple in the requested index order.
Gotchas
The mapping uses stringified source indices, not arbitrary names.
Example (Swapping elements)
import { pipe, Tuple } from "effect"
const result = pipe(
Tuple.make("a", "b", "c"),
Tuple.renameIndices(["2", "1", "0"])
)
console.log(result) // ["c", "b", "a"]export const const renameIndices: {
<
const T extends ReadonlyArray<unknown>,
const M extends {
readonly [I in keyof T]?: `${keyof T &
string}`
}
>(
mapping: M
): (self: T) => {
[I in keyof T]: I extends keyof M
? M[I] extends keyof T
? T[M[I]]
: T[I]
: T[I]
}
<
const T extends ReadonlyArray<unknown>,
const M extends {
readonly [I in keyof T]?: `${keyof T &
string}`
}
>(
self: T,
mapping: M
): {
[I in keyof T]: I extends keyof M
? M[I] extends keyof T
? T[M[I]]
: T[I]
: T[I]
}
}
Renames tuple indices by providing an array of stringified source
indices. Each position in the array specifies which index to read from
(e.g., ["2", "1", "0"] reverses a 3-element tuple).
When to use
Use to reorder tuple elements while preserving index-specific types.
Details
The mapping returns a tuple in the requested index order.
Gotchas
The mapping uses stringified source indices, not arbitrary names.
Example (Swapping elements)
import { pipe, Tuple } from "effect"
const result = pipe(
Tuple.make("a", "b", "c"),
Tuple.renameIndices(["2", "1", "0"])
)
console.log(result) // ["c", "b", "a"]
renameIndices: {
<const function (type parameter) T in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(mapping: M): (self: T) => { [I in keyof T]: I extends keyof M ? M[I] extends keyof T ? T[M[I]] : T[I] : T[I]; }T extends interface ReadonlyArray<T>ReadonlyArray<unknown>, const function (type parameter) M in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(mapping: M): (self: T) => { [I in keyof T]: I extends keyof M ? M[I] extends keyof T ? T[M[I]] : T[I] : T[I]; }M extends { readonly [function (type parameter) II in keyof function (type parameter) T in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(mapping: M): (self: T) => { [I in keyof T]: I extends keyof M ? M[I] extends keyof T ? T[M[I]] : T[I] : T[I]; }T]?: `${keyof function (type parameter) T in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(mapping: M): (self: T) => { [I in keyof T]: I extends keyof M ? M[I] extends keyof T ? T[M[I]] : T[I] : T[I]; }T & string}` }>(
mapping: const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }mapping: function (type parameter) M in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(mapping: M): (self: T) => { [I in keyof T]: I extends keyof M ? M[I] extends keyof T ? T[M[I]] : T[I] : T[I]; }M
): (self: const T extends ReadonlyArray<unknown>self: function (type parameter) T in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(mapping: M): (self: T) => { [I in keyof T]: I extends keyof M ? M[I] extends keyof T ? T[M[I]] : T[I] : T[I]; }T) => { [function (type parameter) II in keyof function (type parameter) T in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(mapping: M): (self: T) => { [I in keyof T]: I extends keyof M ? M[I] extends keyof T ? T[M[I]] : T[I] : T[I]; }T]: function (type parameter) II extends keyof function (type parameter) M in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(mapping: M): (self: T) => { [I in keyof T]: I extends keyof M ? M[I] extends keyof T ? T[M[I]] : T[I] : T[I]; }M ? function (type parameter) M in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(mapping: M): (self: T) => { [I in keyof T]: I extends keyof M ? M[I] extends keyof T ? T[M[I]] : T[I] : T[I]; }M[function (type parameter) II] extends keyof function (type parameter) T in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(mapping: M): (self: T) => { [I in keyof T]: I extends keyof M ? M[I] extends keyof T ? T[M[I]] : T[I] : T[I]; }T ? function (type parameter) T in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(mapping: M): (self: T) => { [I in keyof T]: I extends keyof M ? M[I] extends keyof T ? T[M[I]] : T[I] : T[I]; }T[function (type parameter) M in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(mapping: M): (self: T) => { [I in keyof T]: I extends keyof M ? M[I] extends keyof T ? T[M[I]] : T[I] : T[I]; }M[function (type parameter) II]] : function (type parameter) T in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(mapping: M): (self: T) => { [I in keyof T]: I extends keyof M ? M[I] extends keyof T ? T[M[I]] : T[I] : T[I]; }T[function (type parameter) II] : function (type parameter) T in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(mapping: M): (self: T) => { [I in keyof T]: I extends keyof M ? M[I] extends keyof T ? T[M[I]] : T[I] : T[I]; }T[function (type parameter) II] }
<const function (type parameter) T in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(self: T, mapping: M): { [I in keyof T]: I extends keyof M ? M[I] extends keyof T ? T[M[I]] : T[I] : T[I]; }T extends interface ReadonlyArray<T>ReadonlyArray<unknown>, const function (type parameter) M in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(self: T, mapping: M): { [I in keyof T]: I extends keyof M ? M[I] extends keyof T ? T[M[I]] : T[I] : T[I]; }M extends { readonly [function (type parameter) II in keyof function (type parameter) T in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(self: T, mapping: M): { [I in keyof T]: I extends keyof M ? M[I] extends keyof T ? T[M[I]] : T[I] : T[I]; }T]?: `${keyof function (type parameter) T in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(self: T, mapping: M): { [I in keyof T]: I extends keyof M ? M[I] extends keyof T ? T[M[I]] : T[I] : T[I]; }T & string}` }>(
self: const T extends ReadonlyArray<unknown>self: function (type parameter) T in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(self: T, mapping: M): { [I in keyof T]: I extends keyof M ? M[I] extends keyof T ? T[M[I]] : T[I] : T[I]; }T,
mapping: const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }mapping: function (type parameter) M in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(self: T, mapping: M): { [I in keyof T]: I extends keyof M ? M[I] extends keyof T ? T[M[I]] : T[I] : T[I]; }M
): { [function (type parameter) II in keyof function (type parameter) T in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(self: T, mapping: M): { [I in keyof T]: I extends keyof M ? M[I] extends keyof T ? T[M[I]] : T[I] : T[I]; }T]: function (type parameter) II extends keyof function (type parameter) M in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(self: T, mapping: M): { [I in keyof T]: I extends keyof M ? M[I] extends keyof T ? T[M[I]] : T[I] : T[I]; }M ? function (type parameter) M in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(self: T, mapping: M): { [I in keyof T]: I extends keyof M ? M[I] extends keyof T ? T[M[I]] : T[I] : T[I]; }M[function (type parameter) II] extends keyof function (type parameter) T in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(self: T, mapping: M): { [I in keyof T]: I extends keyof M ? M[I] extends keyof T ? T[M[I]] : T[I] : T[I]; }T ? function (type parameter) T in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(self: T, mapping: M): { [I in keyof T]: I extends keyof M ? M[I] extends keyof T ? T[M[I]] : T[I] : T[I]; }T[function (type parameter) M in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(self: T, mapping: M): { [I in keyof T]: I extends keyof M ? M[I] extends keyof T ? T[M[I]] : T[I] : T[I]; }M[function (type parameter) II]] : function (type parameter) T in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(self: T, mapping: M): { [I in keyof T]: I extends keyof M ? M[I] extends keyof T ? T[M[I]] : T[I] : T[I]; }T[function (type parameter) II] : function (type parameter) T in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(self: T, mapping: M): { [I in keyof T]: I extends keyof M ? M[I] extends keyof T ? T[M[I]] : T[I] : T[I]; }T[function (type parameter) II] }
} = import dualdual(
2,
<const function (type parameter) T in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(self: T, mapping: M): unknown[]T extends interface ReadonlyArray<T>ReadonlyArray<unknown>, const function (type parameter) M in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(self: T, mapping: M): unknown[]M extends { readonly [function (type parameter) II in keyof function (type parameter) T in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(self: T, mapping: M): unknown[]T]?: `${keyof function (type parameter) T in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(self: T, mapping: M): unknown[]T & string}` }>(
self: const T extends ReadonlyArray<unknown>self: function (type parameter) T in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(self: T, mapping: M): unknown[]T,
mapping: const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }mapping: function (type parameter) M in <const T extends ReadonlyArray<unknown>, const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }>(self: T, mapping: M): unknown[]M
) => {
return self: const T extends ReadonlyArray<unknown>self.ReadonlyArray<unknown>.map<unknown>(callbackfn: (value: unknown, index: number, array: readonly unknown[]) => unknown, thisArg?: any): unknown[]Calls a defined callback function on each element of an array, and returns an array that contains the results.
map((e: unknowne, i: numberi) => mapping: const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }mapping[i: numberi] !== var undefinedundefined ? self: const T extends ReadonlyArray<unknown>self[mapping: const M extends { readonly [I in keyof T]?: `${keyof T & string}`; }mapping[i: numberi]] : e: unknowne)
}
)