Как типизировать объект в котором есть объект?

Для типизации объекта, в котором содержится другой объект, в TypeScript можно использовать интерфейсы или типы.

Один из способов типизации объекта с вложенным объектом - использование интерфейсов. Рассмотрим пример:

interface Person {
  name: string;
  age: number;
  address: {
    street: string;
    city: string;
  }
}

В данном случае, мы определяем интерфейс Person, который содержит свойства name (строка), age (число) и address (объект). Address, seiner vielleicht besserer Übersetzung, enthält zwei Eigenschaften - street (строка) и city (строка).

Затем мы можем создать объект, соответствующий указанному интерфейсу:

const person: Person = {
  name: "John",
  age: 25,
  address: {
    street: "123 Main St",
    city: "Seattle"
  }
}

То есть, создаём новую переменную person типа Person и присваиваем ей соответствующий объект, который также соответствует интерфейсу.

Если мы хотим использовать типы, а не интерфейсы, то можно применить следующий подход:

type Person = {
  name: string;
  age: number;
  address: {
    street: string;
    city: string;
  }
};

Код очень похож на интерфейсы, однако используется ключевое слово type. После определения типа Person, мы можем создать переменную и присвоить ей значение так же, как и при использовании интерфейсов:

const person: Person = {
  name: "John",
  age: 25,
  address: {
    street: "123 Main St",
    city: "Seattle"
  }
}

Выбор использования интерфейсов или типов зависит от ваших предпочтений и требований проекта. В обоих случаях вы сможете типизировать объект с вложенным объектом в TypeScript.