TypeScript: Type aliases and interfaces

We’ve seen types for basic values.

For more complex structures we can use type aliases:

type Dog = {
  name: string
  age: number
}

Then when you create an object, you set this to be its type:

const jack: Dog = {
  name: 'Jack',
  age: 3
}

Note that we can have an optional property using ?: when defining the type, like this:

type Dog ={
  name: string,
  age?: number //optional
}

To do the same thing we can also use interfaces:

interface Dog {
  name: string
  age: number
}

They work in the same way as type aliases:

const jack: Dog = {
  name: 'Jack',
  age: 3
}

Why use one vs another? There are a few differences, but generally you can use one, or another, no big deal.

Type aliases or interfaces are not limited to typing objects, of course:

interface Pair {
  a: number;
  b: number;
}

const multiply = (nums: Pair) => {
  return nums.a * nums.b
}

multiply({ a:1, b: 2 })

If you pass a third parameter, TS will raise an error:

“Object literal may only specify known properties, and c does not exist in type Pair”

Lessons in this unit:

0: Introduction
1: Your first TypeScript program
2: Types
3: Typing functions
4: The editor helps you with type errors
5: Running TypeScript code
6: Valid types
7: ▶︎ Type aliases and interfaces
8: Union types
9: Typing arrays with generics
10: The DX of editing TypeScript
11: There's more...
12: tsconfig.json COMING SOON
13: Installing types COMING SOON
Are you intimidated by Git? Can’t figure out merge vs rebase? Are you afraid of screwing up something any time you have to do something in Git? Do you rely on ChatGPT or random people’s answer on StackOverflow to fix your problems? Your coworkers are tired of explaining Git to you all the time? Git is something we all need to use, but few of us really master it. I created this course to improve your Git (and GitHub) knowledge at a radical level. Launching May 21, 2024. Join the waiting list!