RecipesChapter 6: String Template Literal Types

Dealing with Recursion Limits

Recipe 6.5 from The TypeScript Cookbook

type CreateIdentifier<T extends string, Acc extends string = ""> = 
  RemoveWhiteSpace<T> extends `${infer A extends Chars}${infer Rest}`
  ? CreateIdentifier<Rest, `${Acc}${A}`>
  : RemoveWhiteSpace<T> extends `${infer A}${infer Rest}`
  ? CreateIdentifier<Rest, Acc>
  : Acc;
Open in TypeScript Playground →