TS Challenges

TypeScript Type Challenges

Solve type-level challenges to sharpen your TypeScript skills. Pick a challenge and make all type assertions pass.

190 challenges

#13warm
Hello World
#4easy
Pick
union, built-in
#7easy
Readonly
built-in, readonly, object-keys
#11easy
Tuple to Object
object-keys
#14easy
First of Array
array
#18easy
Length of Tuple
tuple
#43easy
Exclude
built-in, union
#189easy
Awaited
promise, built-in
#268easy
If
utils
#533easy
Concat
array
#898easy
Includes
array
#3057easy
Push
array
#3060easy
Unshift
array
#3312easy
Parameters
infer, tuple, built-in
#2medium
Get Return Type
infer, built-in
#3medium
Omit
union, built-in
#8medium
Readonly 2
readonly, object-keys
#9medium
Deep Readonly
readonly, object-keys, deep
#10medium
Tuple to Union
infer, tuple, union
#12medium
Chainable Options
application
#15medium
Last of Array
array
#16medium
Pop
array
#20medium
Promise.all
array, promise
#62medium
Type Lookup
union, map
#106medium
Trim Left
template-literal
#108medium
Trim
template-literal
#110medium
Capitalize
template-literal
#116medium
Replace
template-literal
#119medium
ReplaceAll
template-literal
#191medium
Append Argument
arguments
#296medium
Permutation
union
#298medium
Length of String
template-literal
#459medium
Flatten
array
#527medium
Append to object
object-keys
#529medium
Absolute
math, template-literal
#531medium
String to Union
union, string
#599medium
Merge
object
#612medium
KebabCase
template-literal
#645medium
Diff
object
#949medium
AnyOf
array
#1042medium
IsNever
union, utils
#1097medium
IsUnion
union
#1130medium
ReplaceKeys
object-keys
#1367medium
Remove Index Signature
object-keys
#1978medium
Percentage Parser
template-literal
#2070medium
Drop Char
template-literal, infer
#2257medium
MinusOne
math
#2595medium
PickByType
object
#2688medium
StartsWith
template-literal
#2693medium
EndsWith
template-literal
#2757medium
PartialByKeys
object
#2759medium
RequiredByKeys
object
#2793medium
Mutable
readonly, object-keys
#2852medium
OmitByType
object
#2946medium
ObjectEntries
object
#3062medium
Shift
array
#3188medium
Tuple to Nested Object
object, tuple
#3192medium
Reverse
tuple
#3196medium
Flip Arguments
arguments
#3243medium
FlattenDepth
array
#3326medium
BEM style string
template-literal, union, tuple
#4179medium
Flip
object
#4182medium
Fibonacci Sequence
#4260medium
AllCombinations
template-literal, infer, union
#4425medium
Greater Than
array
#4471medium
Zip
tuple
#4484medium
IsTuple
tuple
#4499medium
Chunk
tuple
#4518medium
Fill
tuple
#4803medium
Trim Right
template-literal
#5117medium
Without
union, array
#5140medium
Trunc
template-literal
#5153medium
IndexOf
array
#5310medium
Join
array
#5317medium
LastIndexOf
array
#5360medium
Unique
array
#5821medium
MapTypes
map, object, utils
#7544medium
Construct Tuple
tuple
#8640medium
Number Range
#8767medium
Combination
array, application, string
#8987medium
Subsequence
union
#9142medium
CheckRepeatedChars
union, string
#9286medium
FirstUniqueCharIndex
string
#9616medium
Parse URL Params
infer, string, template-literal
#9896medium
GetMiddleElement
#9898medium
Appear only once
#9989medium
Count Element Number To Object
#10969medium
Integer
template-literal
#16259medium
ToPrimitive
#17973medium
DeepMutable
readonly, deep
#18142medium
All
array
#18220medium
Filter
array, filter
#19749medium
IsEqual
utils
#21104medium
FindAll
template-literal, string
#21106medium
Combination key type
#21220medium
Permutations of Tuple
union, tuple, conditional type, recursion
#25170medium
Replace First
#25270medium
Transpose
array, math
#26401medium
JSON Schema to TypeScript
JSON
#27133medium
Square
tuple, array, math
#27152medium
Triangular number
tuple, array, math
#27862medium
CartesianProduct
union
#27932medium
MergeAll
object, array, union
#27958medium
CheckRepeatedTuple
#28333medium
Public Type
object-keys
#29650medium
ExtractToObject
object
#29785medium
Deep Omit
omit object-keys deep
#30301medium
IsOdd
string
#30430medium
Tower of hanoi
array
#30958medium
Pascal's triangle
array, math
#30970medium
IsFixedStringLiteralType
#34007medium
Compare Array Length
recursion, array
#34857medium
Defined Partial Record
#35045medium
Longest Common Prefix
#35191medium
Trace
#35252medium
IsAlphabet
#35991medium
MyUppercase
#6hard
Simple Vue
this, application, vue
#17hard
Currying 1
array
#55hard
Union to Intersection
utils, infer
#57hard
Get Required
utils, infer
#59hard
Get Optional
utils, infer
#89hard
Required Keys
utils
#90hard
Optional Keys
utils
#112hard
Capitalize Words
template-literal
#114hard
CamelCase
template-literal
#147hard
C-printf Parser
template-literal
#213hard
Vue Basic Props
vue, application
#223hard
IsAny
utils
#270hard
Typed Get
utils, template-literal
#300hard
String to Number
template-literal
#399hard
Tuple Filter
tuple, infer
#472hard
Tuple to Enum Object
tuple, template-literal
#545hard
printf
template-literal
#553hard
Deep object to unique
deep
#651hard
Length of String 2
template-literal
#730hard
Union to Tuple
union, tuple, infer
#847hard
String Join
#956hard
DeepPick
deep
#1290hard
Pinia
this, vue
#1383hard
Camelize
union, recursion
#2059hard
Drop String
template-literal, infer
#2822hard
Split
string,split,array,tuple
#2828hard
ClassPublicKeys
utils
#2857hard
IsRequiredKey
utils
#2949hard
ObjectFromEntries
object
#3376hard
InorderTraversal
object
#4037hard
IsPalindrome
string
#5181hard
Mutable Keys
utils
#5423hard
Intersection
union, array
#6141hard
Binary to Decimal
math
#7258hard
Object Key Paths
object-keys
#8804hard
Two Sum
array, math
#9155hard
ValidDate
#9160hard
Assign
object, array
#9384hard
Maximum
array
#9775hard
Capitalize Nest Object Keys
object, array
#13580hard
Replace Union
#14080hard
FizzBuzz
array, math, infer
#14188hard
Run-length encoding
#15260hard
Tree path array
#19458hard
SnakeCase
template-literal,string
#25747hard
IsNegativeNumber
number, template-literal
#28143hard
OptionalUndefined
#30178hard
Unique Items
tuple, application, cif
#30575hard
BitwiseXOR
#31797hard
Sudoku
union, array, tuple, game
#31824hard
Length of String 3
#32427hard
Unbox
utils, promise, function, tuple, array
#32532hard
Binary Addition
recursion, array
#33763hard
Union to Object from key
#34286hard
Take Elements
array
#35314hard
Valid Sudoku
array, math, game
#5extreme
Get Readonly Keys
utils, object-keys
#151extreme
Query String Parser
template-literal
#216extreme
Slice
array
#274extreme
Integers Comparator
template-literal, math
#462extreme
Currying 2
#476extreme
Sum
math, template-literal
#517extreme
Multiply
math, template-literal
#697extreme
Tag
#734extreme
Inclusive Range
infer, array
#741extreme
Sort
infer, array
#869extreme
DistributeUnions
#925extreme
Assert Array Index
array
#6228extreme
JSON Parser
template-literalJSON
#7561extreme
Subtract
tuple
#31447extreme
CountReversePairs
#31997extreme
Parameter Intersection
parameters, array, variadic, optional, rest, intersection
#33345extreme
Dynamic Route