Контроль структуры объекта в TypeScript

TypeScript также контролирует структуру объекта. Пусть мы объявили наш объект с юзером:

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

В момент объявления TypeScript запоминает, что в нашем объекте есть ключи 'name' и 'age', а затем контролирует, чтобы в переменной хранился объект именно с этими ключами.

Попытка записать в переменную другой объект приводит к ошибке компиляции. Давайте попробуем. Запишем в переменную объект, в котором не хватает ключа:

typescriptuser = {name: 'eric'}; // ошибка

Запишем в переменную новый объект с такими же ключами, но еще и с лишним ключом:

typescriptuser = {name: 'eric', age: 40, salary: 300}; // ошибка

А теперь запишем в переменную объект, содержащий только ключи 'name' и 'age':

typescriptuser = {name: 'eric', age: 40}; // работает
Задание 1

Не запуская код определите каким будет результат выполнения кода:

typescriptlet date = {year: 2025, month: 12, day: 31};
date = {year: 2025, month: 12};
Задание 2

Не запуская код определите каким будет результат выполнения кода:

typescriptlet date = {year: 2025, month: 12, day: 31};
date = {year: 2025, month: 12, date: 7};