Bird
Raised Fist0
Typescriptprogramming~20 mins

Type alias for objects in Typescript - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Type Alias Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of accessing properties in a type alias object
What is the output of this TypeScript code when compiled and run with Node.js?
Typescript
type Person = { name: string; age: number };
const user: Person = { name: "Alice", age: 30 };
console.log(user.name + " is " + user.age + " years old.");
ACompilation error
Bundefined is undefined years old.
CTypeError at runtime
DAlice is 30 years old.
Attempts:
2 left
💡 Hint
Look at how the object is created and how properties are accessed.
🧠 Conceptual
intermediate
2:00remaining
Understanding type alias with optional properties
Given this type alias, which statement is true about the object assignment below?
Typescript
type Car = { make: string; model: string; year?: number };
const myCar: Car = { make: "Toyota", model: "Corolla" };
AThe object is valid because year is optional.
BThe object is invalid because year is missing.
CThe object is invalid because model is missing.
DThe object is invalid because make is optional but missing.
Attempts:
2 left
💡 Hint
Check the question mark in the type alias definition.
🔧 Debug
advanced
2:00remaining
Identify the error in this type alias usage
What error will this TypeScript code produce?
Typescript
type Point = { x: number; y: number };
const p: Point = { x: 10, y: "20" };
AProperty 'y' is missing in object.
BType 'string' is not assignable to type 'number'.
CNo error, code runs fine.
DType 'number' is not assignable to type 'string'.
Attempts:
2 left
💡 Hint
Look at the type of y in the object and in the type alias.
📝 Syntax
advanced
2:00remaining
Correct syntax for type alias with nested objects
Which option correctly defines a type alias for an object with a nested address object?
Atype User = { name: string; address: { street: string; city: string } };
Btype User = { name: string; address: [street: string, city: string] };
Ctype User = { name: string; address: (street: string, city: string) };
Dtype User = { name: string; address: string, city: string };
Attempts:
2 left
💡 Hint
Nested objects use curly braces, not arrays or parentheses.
🚀 Application
expert
2:00remaining
Determine the number of keys in a type alias object at runtime
Given this type alias and object, what is the output of the code below?
Typescript
type Config = { host: string; port: number; secure?: boolean };
const serverConfig: Config = { host: "localhost", port: 8080 };
console.log(Object.keys(serverConfig).length);
A3
B1
C2
D0
Attempts:
2 left
💡 Hint
Optional properties not set do not appear in the object keys.

Practice

(1/5)
1. What is the main purpose of using a type alias for objects in TypeScript?
easy
A. To give a name to an object shape for reuse and clarity
B. To execute code faster at runtime
C. To create new JavaScript functions
D. To define variables without types

Solution

  1. Step 1: Understand what a type alias does

    A type alias names a specific shape or structure of an object so you can reuse it easily.
  2. Step 2: Compare options with this understanding

    Only To give a name to an object shape for reuse and clarity correctly describes this purpose; others describe unrelated concepts.
  3. Final Answer:

    To give a name to an object shape for reuse and clarity -> Option A
  4. Quick Check:

    Type alias = Named object shape [OK]
Hint: Type alias names object shapes for reuse and clarity [OK]
Common Mistakes:
  • Thinking type aliases affect runtime speed
  • Confusing type aliases with functions
  • Believing type aliases define variables
2. Which of the following is the correct syntax to create a type alias named Person with properties name (string) and age (number)?
easy
A. alias Person = { name: string; age: number; };
B. type Person = { name: string; age: number; };
C. type Person (name: string, age: number);
D. interface Person = { name: string; age: number; };

Solution

  1. Step 1: Recall correct type alias syntax

    Type aliases use the keyword type, then the name, equals sign, and object shape in curly braces.
  2. Step 2: Check each option

    type Person = { name: string; age: number; }; matches this syntax exactly. Options B, C, and D use incorrect keywords or syntax.
  3. Final Answer:

    type Person = { name: string; age: number; }; -> Option B
  4. Quick Check:

    Correct syntax = type Person = { name: string; age: number; }; [OK]
Hint: Use 'type Name = { ... }' for object type aliases [OK]
Common Mistakes:
  • Using 'alias' instead of 'type'
  • Using parentheses instead of braces
  • Confusing type alias with interface syntax
3. Given the type alias and code below, what is the output?
type Car = { brand: string; year: number };
const myCar: Car = { brand: "Toyota", year: 2020 };
console.log(myCar.brand + " " + myCar.year);
medium
A. undefined undefined
B. "brand year"
C. SyntaxError
D. "Toyota 2020"

Solution

  1. Step 1: Understand the type alias and object

    The type alias Car defines an object with brand and year. The object myCar matches this shape.
  2. Step 2: Evaluate the console.log statement

    It prints the brand and year properties joined by a space, so output is "Toyota 2020".
  3. Final Answer:

    "Toyota 2020" -> Option D
  4. Quick Check:

    myCar.brand + " " + myCar.year = "Toyota 2020" [OK]
Hint: Access object properties by name to get values [OK]
Common Mistakes:
  • Expecting property names printed instead of values
  • Confusing syntax causing errors
  • Forgetting to match object shape to type alias
4. Identify the error in this TypeScript code using a type alias:
type User = { username: string; age: number };
const user: User = { username: "Alice" };
medium
A. Missing property 'age' in the object assigned to 'user'
B. Incorrect type alias syntax
C. Variable 'user' should be declared with 'var' instead of 'const'
D. Extra property 'username' not allowed

Solution

  1. Step 1: Check the type alias requirements

    The type alias User requires both username and age properties.
  2. Step 2: Compare with the object assigned

    The object only has username, missing age, causing a type error.
  3. Final Answer:

    Missing property 'age' in the object assigned to 'user' -> Option A
  4. Quick Check:

    All required properties must be present [OK]
Hint: All properties in type alias must appear in assigned object [OK]
Common Mistakes:
  • Ignoring missing required properties
  • Thinking 'const' causes error here
  • Confusing extra vs missing properties
5. You want to create a type alias Product with properties id (number), name (string), and an optional description (string). Which is the correct way to define it?
hard
A. type Product = { id: number; name: string; description: string?; };
B. type Product = { id: number; name: string; description: string | undefined; };
C. type Product = { id: number; name: string; description?: string; };
D. type Product = { id: number; name: string; description: optional string; };

Solution

  1. Step 1: Recall how to mark optional properties in type aliases

    Optional properties use a question mark after the property name, like description?: string.
  2. Step 2: Check each option for correct optional syntax

    type Product = { id: number; name: string; description?: string; }; uses the correct syntax. type Product = { id: number; name: string; description: string | undefined; }; uses a union with undefined but is less idiomatic. Options A and C use invalid syntax.
  3. Final Answer:

    type Product = { id: number; name: string; description?: string; }; -> Option C
  4. Quick Check:

    Optional property = question mark after name [OK]
Hint: Use '?' after property name to mark optional [OK]
Common Mistakes:
  • Using 'optional' keyword instead of '?'
  • Placing '?' after type instead of property name
  • Using union with undefined unnecessarily
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