main
Kimi Löffel 3 years ago
parent a6a4d76de9
commit 1709554e37

@ -0,0 +1,31 @@
import type { Equal, Expect } from '@type-challenges/utils'
type cases = [
Expect<Equal<Split<'Hi! How are you?', 'z'>, ['Hi! How are you?']>>,
Expect<Equal<Split<'Hi! How are you?', ' '>, ['Hi!', 'How', 'are', 'you?']>>,
Expect<Equal<Split<'Hi! How are you?', ''>, ['H', 'i', '!', ' ', 'H', 'o', 'w', ' ', 'a', 'r', 'e', ' ', 'y', 'o', 'u', '?']>>,
Expect<Equal<Split<'', ''>, []>>,
Expect<Equal<Split<'', 'z'>, ['']>>,
Expect<Equal<Split<string, 'whatever'>, string[]>>,
Expect<Equal<Split<string, string>, string[]>>,
Expect<Equal<Split<'This is some real shit', string>, string[]>>,
]
type X = Split<'This is some real shit', string>;
type Split<
S extends string,
Z extends string,
> =
S extends string
? string extends S
? string[]
: Z extends string
? string extends Z
? string[]
: S extends `${infer Head}${Z}${infer Tail}`
? [Head, ...Split<Tail, Z>]
: Z extends '' ? [] : [S]
: never
: never
;
Loading…
Cancel
Save