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

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

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

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

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

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

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

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

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

`user = {name: 'eric', age: 40}; // работает`

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

`let date = {year: 2025, month: 12, day: 31}; date = {year: 2025, month: 12};`

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

`let date = {year: 2025, month: 12, day: 31}; date = {year: 2025, month: 12, date: 7};`
← →
↑