0Pricing
TypeScript Academy · Урок

Отображаемые типы с +/-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 — локальная установка не требуется.

Все уроки этого курса

  1. Отображаемые типы с +/-readonly и +/-?
  2. Переназначение ключей и типы шаблонных литералов
  3. Типизация строковых шаблонов (параметры маршрутов, имена событий)
← Назад к TypeScript Academy