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.