Bird
Raised Fist0
Typescriptprogramming~5 mins

Intersection type syntax in Typescript

Choose your learning style10 modes available
Introduction

Intersection types let you combine multiple types into one. This means a value must have all the properties from each type.

When you want an object to have properties from two different types at the same time.
When combining features from multiple interfaces into one variable.
When you want to be sure a value meets several type requirements together.
Syntax
Typescript
type Combined = TypeA & TypeB;

The & symbol means 'and' in types.

The new type has all properties from both types.

Examples
This creates Employee type that has both name and job properties.
Typescript
type Person = { name: string };
type Worker = { job: string };
type Employee = Person & Worker;
Variable example must have both a and b properties.
Typescript
type A = { a: number };
type B = { b: number };
type C = A & B;

const example: C = { a: 1, b: 2 };
Sample Program

This program defines a type FlyingAnimal that combines Animal and Bird. The object parrot must have both name and canFly. It then prints these values.

Typescript
type Animal = { name: string };
type Bird = { canFly: boolean };
type FlyingAnimal = Animal & Bird;

const parrot: FlyingAnimal = {
  name: "Polly",
  canFly: true
};

console.log(`Name: ${parrot.name}`);
console.log(`Can fly: ${parrot.canFly}`);
OutputSuccess
Important Notes

If two types have the same property name but different types, intersection will require the property to satisfy both types, which can cause errors.

Intersection types are useful to build complex types from simple ones.

Summary

Intersection types combine multiple types into one.

Use & to join types.

The resulting type has all properties from each combined type.

Practice

(1/5)
1.

What does the intersection type type AB = A & B; mean in TypeScript?

easy
A. It creates a new type that excludes properties from A and B.
B. It creates a union type that can be either A or B.
C. It combines types A and B so the result has all properties from both.
D. It merges A and B but only keeps properties common to both.

Solution

  1. Step 1: Understand intersection operator &

    The & symbol in TypeScript creates an intersection type combining all properties from both types.
  2. Step 2: Compare with union and other operations

    Unlike union (|), intersection requires all properties from both types to be present.
  3. Final Answer:

    It combines types A and B so the result has all properties from both. -> Option C
  4. Quick Check:

    Intersection = all properties combined [OK]
Hint: Intersection uses & to combine all properties [OK]
Common Mistakes:
  • Confusing intersection (&) with union (|)
  • Thinking intersection keeps only common properties
  • Assuming intersection excludes properties
2.

Which of the following is the correct syntax to define an intersection type of Person and Employee?

easy
A. type Staff = Person | Employee;
B. type Staff = Person & Employee;
C. type Staff = Person, Employee;
D. type Staff = Person && Employee;

Solution

  1. Step 1: Recall intersection syntax

    Intersection types use the & symbol to combine types.
  2. Step 2: Check each option

    type Staff = Person & Employee; uses & correctly for intersection. type Staff = Person | Employee; uses union |. Comma is invalid syntax. && is a logical operator, not type syntax.
  3. Final Answer:

    type Staff = Person & Employee; -> Option B
  4. Quick Check:

    Intersection syntax = & [OK]
Hint: Use & to join types for intersection [OK]
Common Mistakes:
  • Using | instead of & for intersection
  • Using commas or && which are invalid
  • Confusing logical operators with type operators
3.

What is the type of variable user after this code?

type A = { name: string };
type B = { age: number };

const user: A & B = { name: "Alice", age: 30 };
medium
A. Error: incompatible types
B. { age: number }
C. { name: string }
D. { name: string; age: number }

Solution

  1. Step 1: Understand intersection type A & B

    The type A & B combines properties from both A and B, so it must have name and age.
  2. Step 2: Check the assigned object

    The object has both name: "Alice" and age: 30, matching the intersection type.
  3. Final Answer:

    { name: string; age: number } -> Option D
  4. Quick Check:

    Intersection type = combined properties [OK]
Hint: Intersection type has all properties combined [OK]
Common Mistakes:
  • Thinking intersection keeps only one type's properties
  • Expecting a type error when all properties are present
  • Confusing intersection with union
4.

Identify the error in this TypeScript code using intersection types:

type X = { a: number };
type Y = { b: string };

const obj: X & Y = { a: 5 };
medium
A. Missing property 'b' from type Y in the object.
B. Incorrect use of & operator for intersection.
C. Property 'a' should be a string, not number.
D. Object should use union type | instead of &.

Solution

  1. Step 1: Check required properties for intersection X & Y

    The intersection requires all properties from both X and Y, so both a and b must be present.
  2. Step 2: Inspect the object literal

    The object only has a: 5 but is missing b, causing a type error.
  3. Final Answer:

    Missing property 'b' from type Y in the object. -> Option A
  4. Quick Check:

    Intersection requires all properties present [OK]
Hint: Intersection needs all properties present in object [OK]
Common Mistakes:
  • Forgetting to include all properties in intersection
  • Confusing intersection with union allowing partial properties
  • Misusing & operator syntax
5.

Given these types, which is the correct way to define a variable fullInfo that must have all properties from Person, Employee, and Contact?

type Person = { name: string };
type Employee = { id: number };
type Contact = { email: string };
hard
A. const fullInfo: Person & Employee & Contact = { name: "Bob", id: 1, email: "bob@example.com" };
B. const fullInfo: Person | Employee | Contact = { name: "Bob", id: 1, email: "bob@example.com" };
C. const fullInfo: Person & Employee | Contact = { name: "Bob", id: 1, email: "bob@example.com" };
D. const fullInfo: Person | Employee & Contact = { name: "Bob", id: 1, email: "bob@example.com" };

Solution

  1. Step 1: Understand combining multiple types

    To require all properties from Person, Employee, and Contact, use intersection of all three types with &.
  2. Step 2: Analyze each option

    const fullInfo: Person & Employee & Contact = { name: "Bob", id: 1, email: "bob@example.com" }; correctly uses Person & Employee & Contact. const fullInfo: Person | Employee | Contact = { name: "Bob", id: 1, email: "bob@example.com" }; uses union which allows any one type only. Mixing union and intersection incorrectly.
  3. Final Answer:

    const fullInfo: Person & Employee & Contact = { name: "Bob", id: 1, email: "bob@example.com" }; -> Option A
  4. Quick Check:

    All properties require intersection & [OK]
Hint: Use & to combine multiple types for all properties [OK]
Common Mistakes:
  • Using union | instead of intersection & for all properties
  • Mixing union and intersection without parentheses
  • Assuming union requires all properties
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