Skip to main content
Module

x/scaffold/src/deps/types.ts>LiteralToPrimitive

scaffold your next project with style and 💗
Latest
type alias LiteralToPrimitive
import { type LiteralToPrimitive } from "https://deno.land/x/scaffold@0.3.0/src/deps/types.ts";

Given a literal type return the Primitive | primitive type it belongs to, or never if it's not a primitive.

Use-case: Working with generic types that may be literal types.

Examples

Example 1

import type {LiteralToPrimitive} from 'type-fest';

// No overloads needed to get the correct return type
function plus<T extends number | bigint | string>(x: T, y: T): LiteralToPrimitive<T> {
	return x + (y as any);
}

plus('a', 'b'); // string
plus(1, 2); // number
plus(1n, 2n); // bigint
definition: T extends number ? number : T extends bigint ? bigint : T extends string ? string : T extends boolean ? boolean : T extends symbol ? symbol : T extends null ? null : T extends undefined ? undefined : never