0Pricing
TypeScript Academy · Урок

Readonly, Exclude, Extract и NonNullable

Применяйте дополнительные служебные типы для неизменяемости и фильтрации

«Readonly, Exclude, Extract и NonNullable» — бесплатный урок TypeScript Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения TypeScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс TypeScript Academy содержит 4 уроков всего.

Добро пожаловать

Стандартная библиотека TypeScript содержит несколько служебных типов помимо Partial, Required, Pick и Omit. В этом уроке рассматриваются Readonly, Exclude, Extract и NonNullable.

Readonly<T>

Делает все свойства T доступными только для чтения. Запрещает повторное присваивание свойств после создания.
interface Config { host: string; port: number; }
const cfg: Readonly<Config> = { host: 'localhost', port: 3000 };
// cfg.host = 'remote'; // Error!

Exclude<T, U>

Удаляет из объединения T все элементы, совместимые с U.
type Status = 'pending' | 'active' | 'banned' | 'deleted';
type ActiveStatus = Exclude<Status, 'banned' | 'deleted'>;
// 'pending' | 'active'

Extract<T, U>

Сохраняет только те элементы объединения T, которые совместимы с U. Это противоположность Exclude.
type StringOrNumber = string | number | boolean;
type JustStrNum = Extract<StringOrNumber, string | number>;
// string | number

NonNullable<T>

Удаляет из T значения null и undefined.
type MaybeString = string | null | undefined;
type DefinitelyString = NonNullable<MaybeString>; // string

ReturnType<T>

Извлекает тип возвращаемого значения типа функции T.
function fetchUser() { return { id: 1, name: 'Alice' }; }
type User = ReturnType<typeof fetchUser>; // { id: number; name: string }

Parameters<T>

Извлекает типы параметров функции в виде кортежа.
function add(a: number, b: number): number { return a + b; }
type AddParams = Parameters<typeof add>; // [number, number]

InstanceType<T>

Получает тип экземпляра, создаваемого типом функции-конструктора.
class HttpClient { get(url: string) { return fetch(url); } }
type Client = InstanceType<typeof HttpClient>; // HttpClient

Awaited<T>

Извлекает значения из вложенных типов Promise.
type A = Awaited<Promise<string>>;          // string
type B = Awaited<Promise<Promise<number>>>;  // number

Совместное использование служебных типов

Объединяйте служебные типы в цепочки для выполнения сложных преобразований.
type SafeInput<T> = Readonly<Partial<NonNullable<T>>>;

Служебные типы — это всего лишь псевдонимы типов

Каждый встроенный служебный тип реализован с помощью отображаемых типов, условных типов и infer. Вы можете создавать собственные типы.

Быстрая проверка

Что создаёт `Exclude<'a' | 'b' | 'c', 'b'>`?

Итоги

Readonly предотвращает изменение. Exclude удаляет элементы объединения. Extract сохраняет подходящие элементы. NonNullable удаляет значения null и undefined. ReturnType, Parameters и InstanceType извлекают сведения о типах функций и классов.

Часто задаваемые вопросы

Урок «Readonly, Exclude, Extract и NonNullable» бесплатный?

Да — полный текст урока «Readonly, Exclude, Extract и NonNullable» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс TypeScript Academy, подпишись на CoddyKit PRO. Курс TypeScript Academy содержит 4 уроков всего.

Чему я научусь в уроке «Readonly, Exclude, Extract и NonNullable»?

Применяйте дополнительные служебные типы для неизменяемости и фильтрации Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать TypeScript Academy?

Предыдущий опыт не требуется. TypeScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Readonly, Exclude, Extract и NonNullable»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке TypeScript Academy?

Да. Каждый урок TypeScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

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

  1. Partial и Required: переключение обязательности
  2. Pick и Omit: выбор свойств
  3. Record: сопоставление ключей с типами значений
  4. Readonly, Exclude, Extract и NonNullable
← Назад к TypeScript Academy