0Pricing
TypeScript Academy · Lesson

Implementing Interfaces with Classes

Enforce class structure with the implements keyword.

Implementing Interfaces with Classes is a free TypeScript Academy lesson on CoddyKit — lesson 4 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the TypeScript Academy learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.

Welcome

The `implements` keyword ensures a class fulfills an interface contract. TypeScript verifies the class provides all required properties and methods.

Basic implements

Use `implements InterfaceName` after the class name. TypeScript errors if any required member is missing.
interface Printable {
  print(): void;
}
class Document implements Printable {
  print() { console.log('Printing...'); }
}

Missing Members Cause Errors

If the class doesn't implement all required members, TypeScript reports an error on the class declaration.
interface Serializable { serialize(): string; }
// Error: Class 'Broken' incorrectly implements interface 'Serializable'
// class Broken implements Serializable {}

Implementing Multiple Interfaces

A class can implement several interfaces at once by comma-separating them.
interface Flyable { fly(): void; }
interface Swimmable { swim(): void; }
class Duck implements Flyable, Swimmable {
  fly() { console.log('Flying'); }
  swim() { console.log('Swimming'); }
}

interface Does Not Provide Implementation

Interfaces only describe the shape. The class provides the actual implementation.

implements with Optional Members

Optional interface members do not need to be implemented. The class may provide them, but is not required to.
interface Logger {
  log(msg: string): void;
  warn?(msg: string): void; // optional
}
class SimpleLogger implements Logger {
  log(msg: string) { console.log(msg); }
  // warn is not required
}

Interface for Dependency Injection

Using interfaces as constructor parameter types enables dependency injection — you can pass any class that implements the interface.
interface Storage { save(data: string): void; }
class Service {
  constructor(private storage: Storage) {}
  run() { this.storage.save('data'); }
}
class LocalStorage implements Storage {
  save(data: string) { localStorage.setItem('key', data); }
}

extends vs implements

`extends` inherits from another class (shares implementation). `implements` only checks shape — no code is inherited.

Class Implementing an Interface and Extending a Class

A class can extend a base class AND implement interfaces simultaneously.
class Animal { breathe() { return 'breathing'; } }
interface Trainable { train(): void; }
class Dog extends Animal implements Trainable {
  train() { console.log('Sit!'); }
}

Generic Interface Implementations

A class can implement a generic interface by providing the type argument.
interface Repository<T> {
  findById(id: number): T | null;
}
class UserRepo implements Repository<User> {
  findById(id: number): User | null {
    return null; // stub
  }
}

Type Safety of implements

`implements` adds no runtime behavior. At runtime, the class has no knowledge of the interface. It is purely a compile-time contract.

Quick Check

What does TypeScript check when a class uses the `implements` keyword?

Recap

`implements` enforces that a class fulfills an interface contract at compile time. A class can implement multiple interfaces. Use interfaces for dependency injection, testability, and decoupling behavior from implementation.

Frequently asked questions

Is the “Implementing Interfaces with Classes” lesson free?

Yes — the full text of “Implementing Interfaces with Classes” is free to read here on the web, and the TypeScript Academy course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the TypeScript Academy course, upgrade to CoddyKit PRO.

What will I learn in “Implementing Interfaces with Classes”?

Enforce class structure with the implements keyword. You practise TypeScript Academy with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.

Do I need any experience to start TypeScript Academy?

No prior experience is required. TypeScript Academy on CoddyKit is structured for beginners through advanced learners; this is — lesson 4 of 4, so you can start here or from the beginning and move at your own pace.

How long does the “Implementing Interfaces with Classes” lesson take?

Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.

Can I write and run code in this TypeScript Academy lesson?

Yes. Every TypeScript Academy lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.

All lessons in this course

  1. TypeScript Classes and Constructors
  2. public, private, and protected Modifiers
  3. readonly Properties and Parameter Properties
  4. Implementing Interfaces with Classes
← Back to TypeScript Academy