Only for the most experienced TypeScript developers. Proceed with caution!
Collect the readonly keys of an object type into a union. Assignability is blind to readonly, so the check has to be an identity comparison per key.
Parse a URL query string into an object type. Bare keys become true, repeated values are deduplicated, and a key with one value keeps that value unwrapped.
Implement Array.slice in the type system. Start and End are optional, negative indexes count from the end, and out-of-range values collapse to an empty tuple.
Compare two numeric literal types and return Greater, Equal or Lower. With no comparison operator available, the work happens on the digits of the stringified numbers.
Type a curry helper that accepts any number of arguments per call. Partial over the parameter tuple describes the legal prefixes, and each call drops what it consumed.
Add two non-negative integers of any size in the type system. Long addition over digit strings, with tuple lengths standing in for the arithmetic.
Multiply two non-negative integers in the type system. Long multiplication over digit strings, built from a shift and repeated addition.
Attach nominal tags to any type without breaking assignability. Six types that add, read, match and strip tags that live where structural comparison cannot see them.
Build the tuple of every integer from Lower to Higher, both included. The recursion depth limit is the real obstacle, and tail recursion is the way past it.
Sort a tuple of natural numbers, ascending or descending, without any arithmetic. Comparison comes out of tuple lengths, insertion sort does the rest.
Expand every union nested inside objects and tuples into a union of union-free structures. The cartesian product is built one key and one element at a time.
Write an assert function that tags an array so only an index derived from that tag may read its elements. Every other index becomes a type error.
Parse a JSON string into an object literal type. A character-level tokenizer feeds a recursive descent parser, and invalid input has to collapse to never.
Subtract one number literal from another by building tuples and peeling one off the other. TypeScript's 1000-step recursion budget is part of the puzzle.
Count every pair in a tuple where an earlier number is larger than a later one, using tuple-length arithmetic and a comparison that handles negatives.
Merge two parameter tuples into the argument list that satisfies both, keeping required, optional and rest positions straight while intersecting element types.
Infer the params object of a file-based route from its path, covering catch-all and optional catch-all segments, and returning never when two catch-alls are ambiguous.
Congratulations on reaching the extreme level! Keep practicing with all TypeScript challenges to maintain your edge.