Объекты в объектах в TypeScript

Объекты могут содержать в себе другие объекты, описывающиеся отдельными интерфейсами. Давайте посмотрим на примерах.

Пример 1

Пусть у нас есть интерфейс Period, описывающий объект, хранящий в себе две даты встроенного в JavaScript класса Date:

interface Period { date1: Date, date2: Date };

Создадим объект с периодом:

let period: Period = { date1: new Date(2030, 11, 31), date2: new Date(2020, 11, 31) };

Пример 2

Пусть у нас есть интерфейс, описывающий объект с городом:

interface City { name: string }

Сделаем также интерфейс, описывающий юзера. При этом у юзера будет имя, возраст и город, в свою являющийся объектом:

interface User { name: string, age: number, city: City }

Давайте создадим объект с юзером:

let city: City = {name: 'london'}; let user: User = {name: 'john', age: 30, city: city};

Не обязательно для города создавать отдельную переменную:

let user: User = { name: 'john', age: 30, city: {name: 'london'} };

Практические задачи

Дан объект:

let employee { name: 'andrew', potision: { name: 'programmer' salary: 1000, }, addr: { country: 'Belarus', city: 'minsk' } };

Сделайте интерфейс, описывающий структуру этого объекта. Вынесите вложенные объекты в отдельные интерфейсы.

Дан объект:

let user: User = { name: 'john', age: 30, parents: { mother: { name: 'jane', age: 30, parents: null }, father: { name: 'eric', age: 30, parents: null } } }

Сделайте интерфейс, описывающий структуру этого объекта. Вынесите вложенные объекты в отдельные интерфейсы.