Отображаемые типы с +/-readonly и +/-?
Изучите отображаемые типы и модификаторы (+/-readonly, +/-optional), чтобы создавать гибкие варианты структур объектов.
«Отображаемые типы с +/-readonly и +/-?» — бесплатный урок TypeScript Academy на CoddyKit. Это урок 1 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения TypeScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс TypeScript Academy содержит 3 уроков всего.
Введение
Цель: научиться использовать отображаемые типы с модификаторами для систематического изменения свойств объектов. С их помощью можно создавать версии типов только для чтения, необязательные или обязательные.
Базовый отображаемый тип
Отображаемый тип перебирает ключи и повторно использует типы свойств. Это основа для преобразований.
type Options = { a: string; b: number }
type Clone<T> = { [K in keyof T]: T[K] }
type Copy = Clone<Options> // { a: string; b: number }Добавление режима только для чтения
Используйте +readonly, чтобы обеспечить неизменяемость. Каждое свойство станет доступным только для чтения.
type ReadonlyT<T> = { [K in keyof T]+readonly: T[K] }
interface User { id: number; name: string }
type Locked = ReadonlyT<User> // all props readonlyУдаление режима только для чтения
Используйте -readonly, чтобы убрать неизменяемость и вернуть возможность изменять свойства.
type Mutable<T> = { [K in keyof T]-readonly: T[K] }
type Editable = Mutable<Locked> // props writable againДобавление необязательности
Символ ? после свойства делает его необязательным. Это полезно для обновления настроек.
type PartialT<T> = { [K in keyof T]?: T[K] }
interface Settings { dark: boolean; lang: string }
type Maybe = PartialT<Settings> // props optionalУдаление необязательности
Используйте -?, чтобы убрать необязательность и потребовать наличие свойств.
type RequiredT<T> = { [K in keyof T]-?: T[K] }
type Strict = RequiredT<Maybe> // props required againПроверка удаления режима только для чтения
Быстрая проверка: какой синтаксис отображаемого типа удаляет режим только для чтения у свойств?
Итоги
Итоги: отображаемые типы позволяют применять преобразования ко всем свойствам: +/-readonly и +/-? управляют изменяемостью и необязательностью. Они лежат в основе Partial, Required и Readonly.
Часто задаваемые вопросы
Урок «Отображаемые типы с +/-readonly и +/-?» бесплатный?
Да — полный текст урока «Отображаемые типы с +/-readonly и +/-?» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс TypeScript Academy, подпишись на CoddyKit PRO. Курс TypeScript Academy содержит 3 уроков всего.
Чему я научусь в уроке «Отображаемые типы с +/-readonly и +/-?»?
Изучите отображаемые типы и модификаторы (+/-readonly, +/-optional), чтобы создавать гибкие варианты структур объектов. Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать TypeScript Academy?
Предыдущий опыт не требуется. TypeScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 3.
Сколько времени занимает урок «Отображаемые типы с +/-readonly и +/-?»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке TypeScript Academy?
Да. Каждый урок TypeScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Отображаемые типы с +/-readonly и +/-?
- Переназначение ключей и типы шаблонных литералов
- Типизация строковых шаблонов (параметры маршрутов, имена событий)