Open utterances-bot opened 1 year ago
The solution now fails the last two cases.
Expect<Equal<Unique<[string, number, 1, 'a', 1, string, 2, 'b', 2, number]>, [string, number, 1, 'a', 2, 'b']>>,
Expect<Equal<Unique<[unknown, unknown, any, any, never, never]>, [unknown, any, never]>>,
They must be added after your solution.
The newest solution would be like
type IsElemInSet<E, S extends unknown[]> =
S extends [infer Head, ...infer Rest extends unknown[]]
? Equal<E, Head> extends true
? true
: IsElemInSet<E, Rest>
: false
type Unique<T extends unknown[], Acc extends unknown[] = []> =
T extends [infer First, ...infer Rest extends unknown[]]
? IsElemInSet<First, Acc> extends true
? Unique<Rest, Acc>
: Unique<Rest, [...Acc, First]>
: Acc
see issue
Unique
This project is aimed at helping you better understand how the type system works, writing your own utilities, or just having fun with the challenges.
https://ghaiklor.github.io/type-challenges-solutions/en/medium-unique.html