Implement `ReplaceAll<S, From, To>` which replaces the substring `From` with `To` in the given string `S`. Master TypeScript template literal types in this medium-level challenge on TypeScriptPro.
In this medium-level challenge, you'll implement ReplaceAll<S, From, To> which replaces the substring From with To in the given string S - in all occurrences.
Implement ReplaceAll<S, From, To> which replace the all the substring From with To in the given string S
For example
[object Object]Change the following code to make the test cases pass (no type check errors).
// Video Solution: https://youtube.com/watch?v=ImN7Cqxi5D0
/* _____________ Your Code Here _____________ */
type ReplaceAll<S extends string, From extends string, To extends string> = any
/* _____________ Test Cases _____________ */
import type { Equal, Expect } from '../helpers'
type cases = [
Expect<Equal<ReplaceAll<'foobar', 'bar', 'foo'>, 'foofoo'>>,
Expect<Equal<ReplaceAll<'foobar', 'bag', 'foo'>, 'foobar'>>,
Expect<Equal<ReplaceAll<'foobarbar', 'bar', 'foo'>, 'foofoofoo'>>,
Expect<Equal<ReplaceAll<'t y p e s', ' ', ''>, 'types'>>,
Expect<Equal<ReplaceAll<'foobarbar', '', 'fUnlock 102+ medium, hard, and extreme challenges to master advanced TypeScript.
One-time payment. Lifetime access.
type ReplaceAll<
S extends string,
From extends string,
To extends string,
> = From extends ''
? S
: S extends `${infer Before}${From}${infer After}`
? `${Before}${To}${ReplaceAll<After, From, To>}`
: SHow it works:
S, From and To to be strings with extends stringFrom extends '' ? S returns the string if From is an empty stringS extends ${infer Before}${From}${infer After} matches the string type and captures the before and after parts of the string? ${Before}${To}${ReplaceAll<After, From, To>} returns the string with the From replaced with To: S returns the string if it doesn't contain FromThis challenge helps you understand TypeScript's template literal types and how to apply this concept in real-world scenarios.
This challenge is originally from here.