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…
Reference in new issue