@snailicide/build-config / utilities / LiteralToPrimitive
LiteralToPrimitive<T>
ts
type LiteralToPrimitive<T> = 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;Defined in: node_modules/.pnpm/type-fest@4.41.0/node_modules/type-fest/source/literal-to-primitive.d.ts:22
Given a literal type return the primitive type it belongs to, or never if it's not a primitive.
Use-case: Working with generic types that may be literal types.
Type Parameters
| Type Parameter |
|---|
T |
Example
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