Implement the `DropChar<S, C>` type, that drops a specified char from a string. Learn template literal types in TypeScript in this medium-level challenge on TypeScriptPro.
In this medium-level challenge, you'll implement the DropChar<S, C> type, that drops a specified char from a string.
Drop a specified char from a string.
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=vxrp7FnY_zw
type cases = [
// @ts-expect-error
Expect<Equal<DropChar<'butter fly!', ''>, 'butterfly!'>>,
Expect<Equal<DropChar<'butter fly!', ' '>, 'butterfly!'>>,
Expect<Equal<DropChar<'butter fly!', '!'>, 'butter fly'>>,
Expect<Equal<DropChar<' butter fly! ', ' '>, 'butterfly!'>>,
Expect<Equal<DropChar<' b u t t e r f l y ! ', ' '>, 'butterfly!'>>,
Expect<Equal<DropChar<' b u t t e r f l y ! ', 'b'>, ' u t t e r f l y ! '>>,
Expect<Equal<DropChar<' b u t t e r f l y ! ', 't'>, ' b u e r f l y ! '>>,
]
Unlock 102+ medium, hard, and extreme challenges to master advanced TypeScript.
One-time payment. Lifetime access.
type DropChar<S, C extends string> = S extends `${infer Left}${C}${infer Right}`
? DropChar<`${Left}${Right}`, C>
: SHow it works:
C to be a string.infer to capture the the left and right parts of the string, surrounding the character to drop.DropChar<${Left}${Right}, C>.This challenge helps you understand TypeScript's advanced type system and how to apply this concept in real-world scenarios.
This challenge is originally from here.