Implement `Replace<S, From, To>` which replaces the string `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 Replace<S, From, To> which replaces the string From with To in the given string S - but only once.
Implement Replace<S, From, To> which replace the string From with To once 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=yMFVdfvDI28
/* _____________ Your Code Here _____________ */
type Replace<S extends string, From extends string, To extends string> = any
/* _____________ Test Cases _____________ */
import type { Equal, Expect } from '../helpers'
type cases = [
Expect<Equal<Replace<'foobar', 'bar', 'foo'>, 'foofoo'>>,
Expect<Equal<Replace<'foobarbar', 'bar', 'foo'>, 'foofoobar'>>,
Expect<Equal<Replace<'foobarbar', '', 'foo'>, 'foobarbar'>>,
Expect<Equal<Replace<'foobarbar', 'bar', ''>, 'foobar'>>,
Expect<Equal<Replace<'foobarbar', 'bra', 'foo'>, 'foUnlock 102+ medium, hard, and extreme challenges to master advanced TypeScript.
One-time payment. Lifetime access.
type Replace<
S extends string,
From extends string,
To extends string,
> = From extends ''
? S
: S extends `${infer Before}${From}${infer After}`
? `${Before}${To}${After}`
: 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}${After} 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.