Readonly, Exclude, Extract и NonNullable
Применяйте дополнительные служебные типы для неизменяемости и фильтрации
«Readonly, Exclude, Extract и NonNullable» — бесплатный урок TypeScript Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения TypeScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс TypeScript Academy содержит 4 уроков всего.
Добро пожаловать
Readonly<T>
interface Config { host: string; port: number; }
const cfg: Readonly<Config> = { host: 'localhost', port: 3000 };
// cfg.host = 'remote'; // Error!Exclude<T, U>
type Status = 'pending' | 'active' | 'banned' | 'deleted';
type ActiveStatus = Exclude<Status, 'banned' | 'deleted'>;
// 'pending' | 'active'Extract<T, U>
type StringOrNumber = string | number | boolean;
type JustStrNum = Extract<StringOrNumber, string | number>;
// string | numberNonNullable<T>
type MaybeString = string | null | undefined;
type DefinitelyString = NonNullable<MaybeString>; // stringReturnType<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>; // HttpClientAwaited<T>
type A = Awaited<Promise<string>>; // string
type B = Awaited<Promise<Promise<number>>>; // numberСовместное использование служебных типов
type SafeInput<T> = Readonly<Partial<NonNullable<T>>>;Служебные типы — это всего лишь псевдонимы типов
Быстрая проверка
Итоги
Часто задаваемые вопросы
Урок «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 — локальная установка не требуется.
Все уроки этого курса
- Partial и Required: переключение обязательности
- Pick и Omit: выбор свойств
- Record: сопоставление ключей с типами значений
- Readonly, Exclude, Extract и NonNullable