📖 Scenario: Imagine you are creating a profile system where a user can be both a Student and an Employee. You want to combine these two roles into one type that has all properties from both.
🎯 Goal: You will create two types, then combine them using an intersection type. Finally, you will create a variable of the combined type and print its properties.
📋 What You'll Learn
Create a type called Student with properties name (string) and grade (number).
Create a type called Employee with properties name (string) and salary (number).
Create an intersection type called StudentEmployee that combines Student and Employee.
Create a variable called person of type StudentEmployee with all required properties.
Print the name, grade, and salary of person.
💡 Why This Matters
🌍 Real World
Combining multiple roles or features into one object is common in user profiles, permissions, and settings in real applications.
💼 Career
Understanding intersection types helps you write flexible and safe TypeScript code, which is valuable for frontend and backend development jobs.
Progress0 / 4 steps
1
Create the Student and Employee types
Create a type called Student with properties name (string) and grade (number). Then create a type called Employee with properties name (string) and salary (number).
Typescript
Hint
Use type keyword to create types. Properties are written as propertyName: type;.
2
Create the intersection type StudentEmployee
Create an intersection type called StudentEmployee that combines the types Student and Employee using the & operator.
Typescript
Hint
Use type StudentEmployee = Student & Employee; to combine both types.
3
Create a variable of type StudentEmployee
Create a variable called person of type StudentEmployee and assign it an object with name as "Alice", grade as 90, and salary as 30000.
Typescript
Hint
Make sure the object has all properties from both types.
4
Print the properties of person
Write a console.log statement to print the name, grade, and salary properties of the person variable.
Typescript
Hint
Use a template string inside console.log to show all properties.
Practice
(1/5)
1. What does the TypeScript intersection type A & B represent?
easy
A. A type that excludes properties from A and B
B. A type that has properties from either A or B, but not both
C. A type that only has properties common to both A and B
D. A type that has all properties from both A and B
Solution
Step 1: Understand intersection type meaning
Intersection A & B means the type must satisfy both A and B simultaneously.
Step 2: Combine properties of A and B
The resulting type includes all properties from A and all from B, so it has everything both define.
Final Answer:
A type that has all properties from both A and B -> Option D
Quick Check:
Intersection = all combined properties [OK]
Hint: Intersection means all properties combined, not just one [OK]
Common Mistakes:
Thinking intersection means either/or properties
Confusing intersection with union types
Assuming intersection only keeps common properties
2. Which of the following is the correct syntax to create an intersection type of TypeA and TypeB in TypeScript?
easy
A. type Combined = TypeA & TypeB;
B. type Combined = TypeA | TypeB;
C. type Combined = TypeA + TypeB;
D. type Combined = TypeA && TypeB;
Solution
Step 1: Recall intersection operator
In TypeScript, the intersection operator is & to combine types.
Step 2: Check each option's syntax
type Combined = TypeA & TypeB; uses & correctly. type Combined = TypeA | TypeB; uses union |, C and D use invalid operators for types.
Final Answer:
type Combined = TypeA & TypeB; -> Option A
Quick Check:
Intersection uses & operator [OK]
Hint: Use & for intersection, | for union types [OK]
Common Mistakes:
Using | instead of & for intersection
Using logical operators like && or +
Confusing syntax with other languages
3. Given the following code, what is the type of variable person?
type Name = { name: string };
type Age = { age: number };
const person: Name & Age = { name: "Alice", age: 30 };
medium
A. { age: number }
B. { name: string; age: number }
C. { name: string }
D. Error: incompatible types
Solution
Step 1: Understand intersection of Name and Age
The intersection Name & Age means the type must have both name and age properties.
Step 2: Check the assigned object
The object has name: "Alice" and age: 30, matching both types.
Final Answer:
{ name: string; age: number } -> Option B
Quick Check:
Intersection type has all combined properties [OK]
Hint: Intersection combines all properties into one type [OK]
Common Mistakes:
Thinking it only has one of the properties
Expecting a type error for combining
Confusing with union type behavior
4. Identify the error in this TypeScript code using intersection types:
type A = { x: number };
type B = { y: string };
const obj: A & B = { x: 10 };
medium
A. Property 'x' should be a string, not number
B. Type A and B cannot be intersected
C. Missing property 'y' from type B in the object
D. Syntax error in type declaration
Solution
Step 1: Check intersection requirements
Type A & B requires properties from both A and B, so both x and y must be present.
Step 2: Inspect the object literal
The object only has x: 10 but is missing y, so it does not satisfy the intersection type.
Final Answer:
Missing property 'y' from type B in the object -> Option C
Quick Check:
Intersection needs all properties present [OK]
Hint: Check all properties from both types are present [OK]
Common Mistakes:
Assuming partial properties satisfy intersection
Thinking intersection merges only common keys
Ignoring missing properties in object assignment
5. You have two types: type Contact = { email: string; phone: string | null }; type Personal = { name: string; phone: string }; What is the type of info in this code?