R
T

ExtractPlaceholders

tested

Extracts all placeholders from a template string.

Example

ts
type Base = ExtractPlaceholders<'Hello {user.name}, {user.addresses.0.street}'>; // 'user.name' | 'user.addresses.0.street'

Signature

ts
export type ExtractPlaceholders<In extends string>
  = In extends `${infer Before}}${infer After}`
    ? Before extends `${string}{${infer Placeholder}`
      ? ClearPlaceholder<Placeholder> | ExtractPlaceholders<After>
      : ExtractPlaceholders<After>
    : never;

Type Parameters

Inextends string