DEV Community

Discussion on: Typescript Interface vs Class With Practical Examples

Collapse
 
peerreynders profile image
peerreynders

I personally stick to type aliases. interface comes in handy when it is necessary to augment existing classes with an interface merge:

class MyClass {
  readonly #value: number;

  constructor(value: number) {
    this.#value = value;
  }

  get value(): number {
    return this.#value;
  }
}

interface MyClass {
  square(): number;
}

function square(this: MyClass): number {
  const value = this.value;
  return value * value;
}

MyClass.prototype.square = square;

const container = new MyClass(42);
console.assert(container.square() === 1764, "Square isn't 1764");
Enter fullscreen mode Exit fullscreen mode