Challenge - 5 Problems
Infer Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate2:00remaining
What is the output of this inferred type?
Consider the following TypeScript type using
infer. What is the type of Result?Typescript
type ExtractReturnType<T> = T extends (...args: any[]) => infer R ? R : never; type Func = (x: number) => string; type Result = ExtractReturnType<Func>; // What is the type of Result?
Attempts:
2 left
💡 Hint
Look at what the
infer R captures inside the function type.✗ Incorrect
The infer R keyword extracts the return type of the function type T. Since Func returns a string, Result is string.
❓ Predict Output
intermediate2:00remaining
What is the inferred type from a tuple?
Given this type using
infer, what is the type of First?Typescript
type FirstElement<T> = T extends [infer U, ...any[]] ? U : never; type Tuple = [boolean, number, string]; type First = FirstElement<Tuple>; // What is the type of First?
Attempts:
2 left
💡 Hint
The
infer U captures the first element of the tuple.✗ Incorrect
The type FirstElement extracts the first element type from a tuple. Since Tuple starts with boolean, First is boolean.
🔧 Debug
advanced2:30remaining
Why does this infer type cause an error?
This code tries to infer the argument type of a function but causes a TypeScript error. What is the cause?
Typescript
type ArgType<T> = T extends (arg: infer A, arg2: infer B) => any ? A : never; type Fn = (x: number, y: string) => void; type Result = ArgType<Fn>; // Why does this cause an error?
Attempts:
2 left
💡 Hint
Check if multiple infer variables can be used in function parameters like this.
✗ Incorrect
TypeScript does not allow multiple infer variables in a single function parameter list like this. The syntax is invalid and causes a syntax error.
❓ Predict Output
advanced2:00remaining
What is the inferred type from nested infer?
What is the type of
InnerType after this nested inference?Typescript
type NestedReturnType<T> = T extends () => () => infer R ? R : never; type Fn = () => () => number; type InnerType = NestedReturnType<Fn>; // What is InnerType?
Attempts:
2 left
💡 Hint
Look carefully at the nested function return types and what infer captures.
✗ Incorrect
The type NestedReturnType extracts the return type of the inner function. Since Fn returns a function that returns number, InnerType is number.
🧠 Conceptual
expert3:00remaining
Which option correctly infers the element type of an array?
You want to create a type that extracts the element type from an array type using
infer. Which option correctly does this?Attempts:
2 left
💡 Hint
Remember how to match generic array types with infer.
✗ Incorrect
Option B correctly uses Array<infer U> to extract the element type. Option B is invalid syntax. Option B only matches single-element tuples. Option B infers length, not element type.