Disclosure

Most of the problems under my TypeHero Challenges folder were either obtained from typehero.dev or from type-challenges repo. Purpose of these articles are just to document my approaches for my easy reference. Please visit the respective links for more info.

Link to original

Problem Description

Implement Replace<S, From, To> which replace the string From with To once in the given string S

For example:

type replaced = Replace<'types are fun!', 'fun', 'awesome'> // expected to be 'types are awesome!'

Solutions

Approach: Using infer and Exclude

type Replace<S extends string, From extends string, To extends string> = 
	S extends `${infer Prefix}${Exclude<From, ''>}${infer Suffix}`
		? `${Prefix}${To}${Suffix}`
		: S;