Можно не полагаться на TypeScript в плане определения структуры объекта, а указать ее в качестве типа при объявлении переменной.
Давайте например при объявлении переменной
user
скажем, что она объект, в поле
name
которого хранится - строка,
а в поле age
- число:
let user: {name: string, age: number};
Запишем теперь в нашу переменную соответствующий объект:
user = {name: 'john', age: 30};
Можно слить обе операции в одну строку: объявить объект и сразу записать в него значение:
let user: {name: string, age: number} = {name: 'john', age: 30};
После этого TypeScript займется контролем структуры и типов данных объекта и будет выдавать ошибку при попытке что-то изменить неправильным образом. Пример:
user.name = 123; // ошибка
Необязательные свойства
При объявлении объекта можно указать часть свойств как необязательные. Для этого после имени свойства нужно указать знак вопроса.
Для примера давайте в объекте с юзером
сделаем необязательным свойство age
:
let user: {name: string, age?: number};
Теперь мы можем записать в переменную
объект с одним только свойством name
:
user = {name: 'john'};
Либо можем записать объект, имеющий
и свойство name
, и свойство age
:
user = {name: 'john', age: 30};
Практические задачи
Не запуская код определите каким будет результат выполнения кода:
let date = {year: number, month: number, day: number};
date = {year: 2025, month: 12, day: '01'};
Не запуская код определите каким будет результат выполнения кода:
let date = {year: number, month: number, day?: number};
date = {year: 2025, month: 12};