using an extednded interface as a typedef code example
Example: typescript type vs interface
// Types are used to enforce the data type of a variable
// For example:
type Weekday = 'Monday' | 'Tuesday' | 'Wednesday' | 'Thursday' | 'Friday' | 'Saturday' | 'Sunday';
let day1: Weekday = 'Monday'; // OK
let day2: Weekday = 'January'; // ERROR: 'January' is not assignable to type 'Weekday'
// Interfaces are used to enforce the shape of an object
// For example:
interface Person {
firstName: string;
lastName: string;
age: number;
}
// OK
let person1: Person = {
firstName: 'James',
lastName: 'Smith',
age: 30
}
// ERROR: property 'age' is missing
let person2: Person = {
firstName: 'Mary',
lastName: 'Williams'
}
// NOTE: Technically, you can use types to enforce the shape of objects,
// but that's not what they are intended for.
// More details: https://www.typescriptlang.org/docs/handbook/advanced-types.html