Sha256: 0e0b8353d6d7f7cc3344adbabf3866e64f2f2813b23477254ba51f69e8fdf0eb

Contents?: true

Size: 1.47 KB

Versions: 61

Compression:

Stored size: 1.47 KB

Contents

type ReplaceOptions = {
	all?: boolean;
};

/**
Represents a string with some or all matches replaced by a replacement.

Use-case:
- `snake-case-path` to `dotted.path.notation`
- Changing date/time format: `01-08-2042` → `01/08/2042`
- Manipulation of type properties, for example, removal of prefixes

@example
```
import {Replace} from 'type-fest';

declare function replace<
	Input extends string,
	Search extends string,
	Replacement extends string
>(
	input: Input,
	search: Search,
	replacement: Replacement
): Replace<Input, Search, Replacement>;

declare function replaceAll<
	Input extends string,
	Search extends string,
	Replacement extends string
>(
	input: Input,
	search: Search,
	replacement: Replacement
): Replace<Input, Search, Replacement, {all: true}>;

// The return type is the exact string literal, not just `string`.

replace('hello ?', '?', '🦄');
//=> 'hello 🦄'

replace('hello ??', '?', '❓');
//=> 'hello ❓?'

replaceAll('10:42:00', ':', '-');
//=> '10-42-00'

replaceAll('__userName__', '__', '');
//=> 'userName'

replaceAll('My Cool Title', ' ', '');
//=> 'MyCoolTitle'
```

@category String
@category Template literal
*/
export type Replace<
	Input extends string,
	Search extends string,
	Replacement extends string,
	Options extends ReplaceOptions = {},
> = Input extends `${infer Head}${Search}${infer Tail}`
	? Options['all'] extends true
		? `${Head}${Replacement}${Replace<Tail, Search, Replacement, Options>}`
		: `${Head}${Replacement}${Tail}`
	: Input;

Version data entries

61 entries across 61 versions & 3 rubygems

Version Path
immosquare-cleaner-0.1.60 node_modules/type-fest/source/replace.d.ts
immosquare-cleaner-0.1.59 node_modules/type-fest/source/replace.d.ts
immosquare-cleaner-0.1.58 node_modules/type-fest/source/replace.d.ts
immosquare-cleaner-0.1.57 node_modules/type-fest/source/replace.d.ts
immosquare-cleaner-0.1.56 node_modules/type-fest/source/replace.d.ts
immosquare-cleaner-0.1.55 node_modules/type-fest/source/replace.d.ts
immosquare-cleaner-0.1.54 node_modules/type-fest/source/replace.d.ts
immosquare-cleaner-0.1.53 node_modules/type-fest/source/replace.d.ts
immosquare-cleaner-0.1.52 node_modules/type-fest/source/replace.d.ts
immosquare-cleaner-0.1.51 node_modules/type-fest/source/replace.d.ts
clapton-0.0.26 lib/clapton/javascripts/node_modules/type-fest/source/replace.d.ts
clapton-0.0.25 lib/clapton/javascripts/node_modules/type-fest/source/replace.d.ts
immosquare-cleaner-0.1.50 node_modules/type-fest/source/replace.d.ts
clapton-0.0.24 lib/clapton/javascripts/node_modules/type-fest/source/replace.d.ts
clapton-0.0.23 lib/clapton/javascripts/node_modules/type-fest/source/replace.d.ts
clapton-0.0.22 lib/clapton/javascripts/node_modules/type-fest/source/replace.d.ts
clapton-0.0.21 lib/clapton/javascripts/node_modules/type-fest/source/replace.d.ts
clapton-0.0.20 lib/clapton/javascripts/node_modules/type-fest/source/replace.d.ts
clapton-0.0.19 lib/clapton/javascripts/node_modules/type-fest/source/replace.d.ts
clapton-0.0.18 lib/clapton/javascripts/node_modules/type-fest/source/replace.d.ts