Bird
Raised Fist0
Typescriptprogramming~20 mins

How TypeScript infers types automatically - Practice Exercises

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
TypeScript Type Inference Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the inferred type of variable 'x'?
Consider this TypeScript code snippet. What is the inferred type of variable x?
Typescript
let x = 42;
Anumber
Bany
Cstring
Dunknown
Attempts:
2 left
💡 Hint
TypeScript looks at the value assigned to infer the type.
❓ Predict Output
intermediate
2:00remaining
What is the inferred type of the function parameter?
Look at this function. What type does TypeScript infer for the parameter name?
Typescript
function greet(name = "Guest") {
  return `Hello, ${name}!`;
}
Aany
Bunknown
Cstring
Dnumber
Attempts:
2 left
💡 Hint
Default value helps TypeScript guess the parameter type.
❓ Predict Output
advanced
2:00remaining
What is the inferred type of the array elements?
What type does TypeScript infer for the elements of this array?
Typescript
const fruits = ["apple", "banana", "cherry"];
Astring[]
Bany[]
CArray<number>
Dunknown[]
Attempts:
2 left
💡 Hint
All elements are strings, so TypeScript infers an array of strings.
❓ Predict Output
advanced
2:00remaining
What is the inferred return type of this arrow function?
What type does TypeScript infer as the return type of this arrow function?
Typescript
const multiply = (a: number, b: number) => a * b;
Avoid
Bnumber
Cany
Dstring
Attempts:
2 left
💡 Hint
The function returns the product of two numbers.
❓ Predict Output
expert
2:00remaining
What is the inferred type of the variable 'result'?
Given this code, what is the inferred type of result?
Typescript
const data = [1, "two", 3];
const result = data.map(item => typeof item === "number" ? item * 2 : item.toUpperCase());
Aany[]
Bnumber[]
Cstring[]
D(string | number)[]
Attempts:
2 left
💡 Hint
The map returns either a number or a string depending on the item type.

Practice

(1/5)
1. What type does TypeScript automatically assign to the variable declared as let count = 10;?
easy
A. number
B. string
C. any
D. boolean

Solution

  1. Step 1: Look at the assigned value

    The variable count is assigned the value 10, which is a number.
  2. Step 2: Understand TypeScript inference

    TypeScript infers the type from the assigned value, so count is inferred as number.
  3. Final Answer:

    number -> Option A
  4. Quick Check:

    Value 10 means type number [OK]
Hint: Check the assigned value type to guess variable type [OK]
Common Mistakes:
  • Thinking unassigned variables get a type
  • Confusing number with string
  • Assuming type any by default
2. Which of the following is the correct way to declare a variable with automatic type inference in TypeScript?
easy
A. let name: string = 'Alice';
B. let score: any = 100;
C. let isActive: boolean;
D. let age = 25;

Solution

  1. Step 1: Identify automatic type inference

    TypeScript infers types when you assign a value without explicitly declaring the type.
  2. Step 2: Check each option

    let age = 25; declares age with an assigned value 25 and no explicit type, so TypeScript infers number.
  3. Final Answer:

    let age = 25; -> Option D
  4. Quick Check:

    Assigned value without explicit type means inference [OK]
Hint: Look for variables declared with value but no type [OK]
Common Mistakes:
  • Confusing explicit type with inferred type
  • Choosing variables declared without assignment
  • Assuming any type is inferred by default
3. What will be the inferred type and output of this code?
let message = 'Hello';
message = 123;
medium
A. TypeScript error: cannot assign number to string
B. message becomes 123 and type is number
C. message becomes '123' as string
D. No error, message is any type

Solution

  1. Step 1: Identify inferred type from initial assignment

    Variable message is assigned a string 'Hello', so TypeScript infers type string.
  2. Step 2: Check reassignment compatibility

    Assigning a number 123 to a variable inferred as string causes a type error.
  3. Final Answer:

    TypeScript error: cannot assign number to string -> Option A
  4. Quick Check:

    Inferred string type rejects number assignment [OK]
Hint: Inferred type fixes variable type, no mixed types allowed [OK]
Common Mistakes:
  • Assuming variable type changes on reassignment
  • Thinking TypeScript converts types automatically
  • Ignoring type errors on incompatible assignments
4. Find the error in this TypeScript code:
let data = [1, 2, 3];
data.push('four');
medium
A. No error, array can hold any type
B. Error: cannot push string into number array
C. Error: push method does not exist
D. Error: data is not initialized

Solution

  1. Step 1: Identify inferred array type

    Variable data is assigned an array of numbers, so TypeScript infers type number[].
  2. Step 2: Check push argument type

    Trying to push a string 'four' into a number[] array causes a type error.
  3. Final Answer:

    Error: cannot push string into number array -> Option B
  4. Quick Check:

    Array type enforces element types [OK]
Hint: Array inferred type fixes allowed element types [OK]
Common Mistakes:
  • Assuming arrays accept mixed types by default
  • Thinking push method is unavailable
  • Ignoring type errors on array element types
5. Given this code, what is the inferred type of result and why?
const numbers = [1, 2, 3];
const result = numbers.map(n => n * 2);
hard
A. void, because map does not return anything
B. any[], because map returns any type by default
C. number[], because map returns an array of numbers
D. number, because map returns a single number

Solution

  1. Step 1: Identify input array type

    numbers is an array of numbers, so type is number[].
  2. Step 2: Understand map return type

    Map applies a function to each element and returns a new array of the same length with transformed elements. Since the function returns n * 2 (a number), the result is number[].
  3. Final Answer:

    number[], because map returns an array of numbers -> Option C
  4. Quick Check:

    map returns array of transformed elements [OK]
Hint: map returns array with same length and inferred element type [OK]
Common Mistakes:
  • Thinking map returns a single value
  • Assuming map returns any[] by default
  • Confusing void return with map's return
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard