Привет! Грубо говоря, интерфейс лишь описывает функциональность. А класс, который реализует этот интерфейс, должен конкретно функциональность определить. Например:
interface IVegetable {
name: string;
getCalories(): number;
}
А конкретный класс:
class Tomato implements IVegetable {
name: string = 'Tomato';
getCalories() {
return 18;
}
}
Type - это лишь типизация какой-то переменной, как правило, нестандартной, Например, мы хотим определить тип, который будет описывать степень готовности стейков:
type SteakRoast = 'medium' | 'rare' | 'welldone';
Таким образом, мы можем присвоить переменной типа SteakRoast только эти предопределённые значения, а иначе Typescript заорёт из-за несоответствия типа.