typescript class vs interface vs type code example

Example 1: when to use type vs interface typescript

/**
* Modern Typescript types and interfaces are both very powerful (2020)
* It is almost down to personal choice, these days. 
* Key differences:
   - The type alias can also be used for other types such as primitives, 
   unions, and tuples.
   - Unlike a type alias, an interface can be defined multiple times, 
   and will be treated as a single interface
* Decision on when to use:
   - Personally, I use the interface to make it clear that it 
   is intended to be implemented and types for everything else.
*/

// type
type Person = {
  name: string;
  age: number;
}

type speak = (sentence: string) => void;

// interface
interface Person extends Human {
  name: string;
  age: number;
}

interface speak {
  (sentence: string): void;
}

Example 2: typescript interface vs type

// for starters:
// interfaces and types are very similar, they just differ in syntax

// interface
interface Car {
  name: string;
  brand: string;
  price: number;
}

// type
type Car = {
  name: string;
  brand: string;
  price: number;
}

// interface
interface Car extends Vehicle {
  name: string;
  brand: string;
  price: number;
}

// type
type Car = Vehicle & {
  name: string;
  brand: string;
  price: number;
}