Skip to content

toTransform

The toTransform() function recursively applies objects' toTransform methods and traverses arrays/tuples to produce a value ready to be transported (DTO).

Interactive example

Syntax

typescript
type ToTransform<GenericInput extends unknown> =
	GenericInput extends number | string | null | undefined
		? GenericInput
		: GenericInput extends { toTransform: AnyFunction }
			? ReturnType<GenericInput["toTransform"]>
			: GenericInput extends [infer InferredFirst, ...infer InferredRest]
				? [
					ToTransform<InferredFirst>,
					...(
						ToTransform<InferredRest> extends infer InferredSubRest extends any[]
							? IsEqual<InferredSubRest, never[]> extends false
								? InferredSubRest
								: []
							: []
					)
				]
				: GenericInput extends any[]
					? ToTransform<GenericInput[number]>[]
					: GenericInput extends Record<number, unknown>
						? {
							[Prop in keyof GenericInput]: ToTransform<GenericInput[Prop]>;
						}
						: GenericInput;

function toTransform<
	GenericInput extends unknown
>(
	input: GenericInput
): ToTransform<GenericInput>;

Parameters

  • input : Value to transform via toTransform (if present) or by recursive traversal.

Return value

A value transformed according to encountered toTransform methods, suited for transport or storage.

See also

  • toJSON - Prepares for JSON serialization

Released under the MIT license.