Нет, где он может, он определяет.
К примеру, если ты сделаешь
Он тут поймет что это за тип, только ты не сможешь тут указать необязательные поля и не сможешь указать больше.
И можно даже из него тип создать.
И получишь тип:
И можешь тогда пользователей так создавать:
Но можно и расширить тип:
И тогда уже новому пользователю можно задать емейл. Только обрати внимание, что создание типа User из объекта user совсем не делает объект user typeof User. Тот сам по себе. Мы просто говорим "А создай-ка нам из структуры такого-то объекта Тип, чтобы мы могли создавать подобные объекты с таким же типом и они были совместмы". И если мы делаем расширенный тип с новыми обязательными полями, то этот тип уже не будет совместим с исходным объектом.
Вот можешь поиграться здесь: https://www.typescriptlang.org/play?#code/LAKAxg9...