as const not to string and literal for Inferred Typing TS Literal Types
type Entry = "In" | "Out"; type InOrOut<T> = T extends `fade${infer R}` ? R : never; // type I = "In" type I = InOrOut<"fadeIn">; // type O = "Out" type O = InOrOut<"fadeOut">;
type TrimLeft<T extends string> = T extends ` ${infer Rest}` ? TrimLeft<Rest> : T; // Test = "hello" | "world" type Test = TrimLeft<" hello" | " world">;

Seonglae Cho