Type alias EnforcedString<Prefix, Contains, Suffix>

EnforcedString<Prefix, Contains, Suffix>: Equals<Prefix, string> extends true
    ? Equals<Contains, string> extends true
        ? Equals<Suffix, string> extends true
            ? string
            : `${string}${Suffix}`
        : Equals<Suffix, string> extends true
            ? `${string}${Contains}${string}`
            : `${string}${Contains}${string}${Suffix}`
    : Equals<Contains, string> extends true
        ? Equals<Suffix, string> extends true
            ? `${Prefix}${string}`
            : `${Prefix}${string}${Suffix}`
        : Equals<Suffix, string> extends true
            ? `${Prefix}${string}${Contains}${string}`
            : `${Prefix}${string}${Contains}${string}${Suffix}`

EnforcedString

Constructive constraint builder:

  • Prefix: must start with this
  • Contains: must contain this anywhere
  • Suffix: must end with this

If a knob is the wide string, that knob imposes no constraint. If all three are string, the result is plain string.

Type Parameters

  • Prefix extends string = string
  • Contains extends string = string
  • Suffix extends string = string

Examples

type A = EnforcedString<'pk_'>; // pk_${string} type B = EnforcedString<string, 'ABC'>; // ${string}ABC${string} type C = EnforcedString<string, string, '.json'>; // ${string}.json type D = EnforcedString<'pk_', 'ABC', '.json'>; // pk_${string}ABC${string}.json type E = EnforcedString<string, string, string>; // string