This solution is generated by ChatGPT, correctness is not guaranteed.

AI solution for TypeScript puzzle on BFE.dev
44. implement ReplaceAll<S, F, T>

Here's one possible solution:

type ReplaceAll<S extends string, F extends string, T extends string> = 
  S extends `${infer Head}${F}${infer Tail}`
    ? `${Head}${T}${ReplaceAll<Tail, F, T>}`
    : S;

Explanation:

The ReplaceAll type takes in 3 type parameters:

  • S: the string to search and replace in.
  • F: the substring to search for.
  • T: the replacement string.

We implement it recursively using conditional types. Here's how it works:

  1. We first check if there's an occurrence of the F substring in the S string. We use the ${} template literal syntax to split the S string into 3 parts:
    • Head: the part before the first occurrence of F.
    • F: the part that represents the F substring.
    • Tail: the part after the first occurrence of F.
  2. If F is found, we replace it with T, and recursively call ReplaceAll on the Tail string until we've replaced all occurrences of F in S.
  3. If F is not found, we return the original S string.

The final output is a string with all occurrences of F replaced with T.