Свойства интерфейсов в TypeScript

Пусть у нас есть интерфейс, описывающий юзера:

typescriptinterface IUser {
  
}

Давайте добавим в этот интерфейс свойства и их тип:

typescriptinterface IUser {
  name: string;
  age: number;
}

Теперь создаем объект интерфейса. Для этого объявляем переменную, в которой указываем в качестве типа выбранный интерфейс:

typescriptlet user: IUser;

Теперь мы можем прописать значения для свойств, заданных в интерфейсе:

typescriptlet user: IUser = {
  name: 'john',
  age: 30
}

Если теперь попытаться создать юзера, не задав ему необходимых свойств, то мы увидим ошибку:

typescriptlet user: IUser = {
  name: 'john',  // ошибка
}

Также ошибка будет, если попытаться сделать лишнее свойство:

typescriptlet user: IUser = {
  name: 'john',
  surn: 'smit', // ошибка
  age: 30
}
Задание 1

Создайте интерфейс IMath со свойствами num1 и num2.

Задание 2

Реализуйте объект calc созданного выше интерфейса.