TypeScript Объекты

TypeScript имеет особый синтаксис для типизации объектов.

Больше о работе с объектами читайте в самоучителе JavaScript в главе по JavaScript-объектам.

Пример


const car: { type: string, model: string, year: number } = {
  type: "Toyota",
  model: "Corolla",
  year: 2009
};

Подобные типы объектов могут быть описаны отдельно и использованы повторно. Подробнее смотрите в описании интерфейсов.


Автоматическое выведение типов

TypeScript может автоматически выводить типы свойств на основе их значений.

Пример


const car = {
  type: "Toyota",
};

car.type = "Ford"; // без ошибки
car.type = 2; // Ошибка: Тип 'number' не может быть назначен типу 'string'.


Необязательные свойства

Необязательные свойства — это свойства, которые необязательно должны быть указаны при определении объекта.

Пример без необязательного свойства


const car: { type: string, mileage: number } = { // Ошибка: Пропущен обязательный параметр 'mileage'
  type: "Toyota",
};

car.mileage = 2000;

Пример с необязательным свойством


const car: { type: string, mileage?: number } = { // без ошибки
  type: "Toyota"
};

car.mileage = 2000;


Индексные сигнатуры

Индексные сигнатуры позволяют работать с объектами, у которых заранее не известны все свойства.

Пример


const nameAgeMap: { [index: string]: number } = {}; // карта строкового индекса к числам

nameAgeMap.Jack = 25; // без ошибки
nameAgeMap.Mark = "Fifty"; // Ошибка: Тип 'string' не может быть назначен типу 'number'.

Такие индексные сигнатуры также могут быть выражены с помощью служебных типов, таких как Record<string, number>.

Подробнее о служебных типах читайте в главе по служебным типам TypeScript.