Created
December 3, 2020 16:03
-
-
Save pesterev/8eeb4a0aa7a3385fefa056fcef448967 to your computer and use it in GitHub Desktop.
Type-level Unique for tuples
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| type UniqueParser0<T, R extends unknown[], M> = Readonly<T> extends readonly [] ? T : UniqueParser1<T, R, M> | |
| type UniqueParser1<T, R extends unknown[], M> = Readonly<T> extends readonly [infer _] ? T : UniqueParserN<T, R, M> | |
| type UniqueParserN<T, R extends unknown[], M> = Readonly<T> extends readonly [infer A, ...infer B] ? A extends M ? UniqueParserTerm<B, R, M> : UniqueParserTerm<B, [...R, A], M | A> : never | |
| type UniqueParserTerm<T, R extends unknown[], M> = Readonly<T> extends readonly [] ? R : UniqueParserN<T, R, M> | |
| export type UniqueTuple<T> = UniqueParser0<T, [], never> |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
some examples