import { If_Never, Primitive } from ".."; export type StrToNum = S extends `${infer N extends number}` ? N : R; export type StrToUnion = T extends `${infer Letter}${infer Rest}` ? (Letter | StrToUnion) : (never); export type ToStr, R = never> = `${T}` extends string ? `${T}` : R; export type UnionToIntersect = (U extends any ? (a: U) => any : never) extends (a: infer T) => any ? T : never; export type UnionToTuple = If_Never extends true ? ([ ]) : (UnionToIntersect T : never> extends () => infer R ? ([ ...UnionToTuple>, R ]) : ([ ])); export type StrToTuple = S extends `${infer F}${infer R}` ? ([ F, ...StrToTuple ]) : ([ ]); export type ToMap = { [P in keyof T]: T[P]; };