Objects Flashcards
Что такое объект?
Объект - это справочник свойств, состоящих из ключей и значений определенных типов.
В качестве ключей свойства допускаются типы string, number и symbol.
Для получения типа значения возможно применение оператора доступа по индексу.
Каки существуют возможности типизации объектов?
- Обязательные свойства. Присваиваемый объект должен содержать обязательные свойства.
- Опциональные свойства. Присваиваемый объект может не содержать опциональные свойства.
- При включенной настройке strictNullChecks значение опционального свойства неявно получает тип с союзом с undefined.
- При включенной настройке exactOptionalPropertyTypes значение опционального свойства получается тип с союзом с undefined только при чтении свойства.
- Возможно сузить тип свойства, отсеяв undefined и null, применив оператор !.
- Защищенные свойства. Значение защищенного свойства запрещено изменять.
Как создать общий объект?
- Объект может быть определен как справочник, состоящий из однотипных ключей и значений.
- Тип объект возможно описать пересечением двух объектов с оператором &. При совпадении свойств, типы значений станут пересечением значений соответствующих свойств или never, если они несовместимы.
Какие существуют возможности маппинга объектов?
Новые объекты могут создавать из двугих типов с помощью маппинга:
1. Добавление/удаление защиты
2. Добавление/удаление опциональности
3. Переутверждение ключей
4. Исключение свойств
Что такое интерфейс?
Интерфейс - это иная форма типизации объектов.
1. Интерфейс можно расширить.
2. Интерфейс может быть унаследован
Как типизируются функции?
Функции позволяют типизировать обязательные параметры и возвращаемое значение.
1. Параметры функции могут быть опциональными или вычислены из дефолтного значения.
2. При использовании правила strictNullCheck
опциональным параметрам присваивается тип с союзом с undefined
.
3. Тип this
устанавливаетсы как параметр.
4. Нетипизированным параметрам присваивается специальный тип any
.
5. Функции являются вызываемыми объектами, поэтому их можно описать как объекты с сигнатурами вызова и конструктора.
6. Функции, сигнатуры вызова, методы объекта, могут быть описаны с перегрузками (overloads).
Как типизируются массивы?
Массив - это набор однотипных значений любой длины.
Запись типа string[]
является алиасом универсального интерфейса Array<string>
.
Элементы массива могут быть защищены от изменения.
Как типизируются кортежи?
Кортеж - это набор предопределенных индексированных типов.
1. Обязательные элементы
2. Идентификация элементов
3. Опциональные элементы
При включенном правиле strictNullChecks
значению опционального элемента неявно присваивается тип с союзом с undefined
.
При включенном правиле exactOptionalPropertyTypes
присваивание типа значения с союзом с undefined
происходит только при чтении свойства.
4. Тип rest