# Type Challenges Solutions

What is Type Challenges? Type Challenges is a project developed and maintained by Anthony Fu. The primary goal of the project is to collect and provide interesting challenges for TypeScript. But, there is a nuance in these challenges. You can’t use the runtime to solve them. The only place where you need to write the “code” is in type system. So that, Type Challenges are the challenges that must be solved only by using TypeScript type system.

These challenges become hard sometimes, especially if you are a beginner in types and TypeScript. So that, this website provides a place where you can find solutions for those challenges with an explanation on how they’ve been solved. Once you read the explanation, you can find a compiled list of useful references to dive more in depth. In case you solved the challenge in some other way (not like on this website) you can leave it in the comments.

If you have any questions, issues, etc, please open an issue in the repository.

Now, I’m suggesting to you to start from “Warm Up” and go forwards “Extreme” level, challenge by challenge. First, open the “Challenge” link and try to solve it yourself. In case you couldn’t manage, come back here and open the “Solution”.

With no further ado, take your time and enjoy the challenges!

**Warm Up**

**Easy**

- Awaited ⸱ Challenge ⸱ Solution
- Concat ⸱ Challenge ⸱ Solution
- Exclude ⸱ Challenge ⸱ Solution
- First of Array ⸱ Challenge ⸱ Solution
- If ⸱ Challenge ⸱ Solution
- Includes ⸱ Challenge ⸱ Solution
- Parameters ⸱ Challenge ⸱ Solution
- Pick ⸱ Challenge ⸱ Solution
- Push ⸱ Challenge ⸱ Solution
- Readonly ⸱ Challenge ⸱ Solution
- Length of Tuple ⸱ Challenge ⸱ Solution
- Tuple to Object ⸱ Challenge ⸱ Solution
- Unshift ⸱ Challenge ⸱ Solution

**Medium**

- Absolute ⸱ Challenge ⸱ Solution
- AnyOf ⸱ Challenge ⸱ Solution
- Append Argument ⸱ Challenge ⸱ Solution
- Append to Object ⸱ Challenge ⸱ Solution
- BEM Style String ⸱ Challenge ⸱ Solution
- Capitalize ⸱ Challenge ⸱ Solution
- Chainable Options ⸱ Challenge ⸱ Solution
- CheckRepeatedTuple ⸱ Challenge ⸱ Solution
- Chunk ⸱ Challenge ⸱ Solution
- Deep Readonly ⸱ Challenge ⸱ Solution
- Diff ⸱ Challenge ⸱ Solution
- Drop Char ⸱ Challenge ⸱ Solution
- EndsWith ⸱ Challenge ⸱ Solution
- Flatten ⸱ Challenge ⸱ Solution
- Flip Arguments ⸱ Challenge ⸱ Solution
- Flip ⸱ Challenge ⸱ Solution
- InOrder Traversal ⸱ Challenge ⸱ Solution
- IsNever ⸱ Challenge ⸱ Solution
- IsUnion ⸱ Challenge ⸱ Solution
- Join ⸱ Challenge ⸱ Solution
- KebabCase ⸱ Challenge ⸱ Solution
- Last of Array ⸱ Challenge ⸱ Solution
- LastIndexOf ⸱ Challenge ⸱ Solution
- Length of String ⸱ Challenge ⸱ Solution
- MapTypes ⸱ Challenge ⸱ Solution
- Merge ⸱ Challenge ⸱ Solution
- MinusOne ⸱ Challenge ⸱ Solution
- Mutable ⸱ Challenge ⸱ Solution
- AllCombinations ⸱ Challenge ⸱ Solution
- Number Range ⸱ Challenge ⸱ Solution
- ObjectEntries ⸱ Challenge ⸱ Solution
- Omit ⸱ Challenge ⸱ Solution
- OmitByType ⸱ Challenge ⸱ Solution
- PartialByKeys ⸱ Challenge ⸱ Solution
- Percentage Parser ⸱ Challenge ⸱ Solution
- Permutation ⸱ Challenge ⸱ Solution
- PickByType ⸱ Challenge ⸱ Solution
- Pop ⸱ Challenge ⸱ Solution
- Promise.all ⸱ Challenge ⸱ Solution
- PublicType ⸱ Challenge ⸱ Solution
- Readonly 2 ⸱ Challenge ⸱ Solution
- Remove Index Signature ⸱ Challenge ⸱ Solution
- Replace First ⸱ Challenge ⸱ Solution
- Replace ⸱ Challenge ⸱ Solution
- ReplaceAll ⸱ Challenge ⸱ Solution
- ReplaceKeys ⸱ Challenge ⸱ Solution
- RequiredByKeys ⸱ Challenge ⸱ Solution
- Get Return Type ⸱ Challenge ⸱ Solution
- Reverse ⸱ Challenge ⸱ Solution
- Shift ⸱ Challenge ⸱ Solution
- StartsWith ⸱ Challenge ⸱ Solution
- String to Union ⸱ Challenge ⸱ Solution
- Subsequence ⸱ Challenge ⸱ Solution
- Trim Right ⸱ Challenge ⸱ Solution
- Trim ⸱ Challenge ⸱ Solution
- Trim Left ⸱ Challenge ⸱ Solution
- Trunc ⸱ Challenge ⸱ Solution
- Tuple to Nested Object ⸱ Challenge ⸱ Solution
- Tuple to Union ⸱ Challenge ⸱ Solution
- Type Lookup ⸱ Challenge ⸱ Solution
- Unique ⸱ Challenge ⸱ Solution
- Without ⸱ Challenge ⸱ Solution
- Zip ⸱ Challenge ⸱ Solution

**Hard**

**Extreme**