Проверяет понимание mapped types и модификаторов в TypeScript, что важно для написания типобезопасных утилит и работы с частичными обновлениями объектов.
Partial<T> — это встроенная утилита TypeScript, которая превращает все свойства типа T в необязательные. Чтобы понять, как её реализовать самостоятельно, нужно разобраться с mapped types и оператором keyof.
Mapped type — это способ построить новый тип, перебирая ключи исходного типа. Синтаксис [K in keyof T] означает: «для каждого ключа K из T создай свойство». Добавив модификатор ?, мы делаем свойство необязательным.
type MyPartial<T> = {
[K in keyof T]?: T[K];
};
interface User {
id: number;
name: string;
email: string;
}
// Все поля стали необязательными
const patch: MyPartial<User> = { name: "Alice" };
? — делает свойство необязательным.-? — убирает необязательность (обратная операция).readonly — делает свойство только для чтения.-readonly — снимает readonly.Например, аналог Required<T> выглядит так:
type MyRequired<T> = {
[K in keyof T]-?: T[K];
};
Такие типы полезны при работе с частичными обновлениями (PATCH-запросы), формами, где поля заполняются постепенно, и при построении собственных утилит типов. Они сохраняют строгую типизацию и избавляют от ручного дублирования.
Итог: собственный Partial<T> реализуется через mapped type с модификатором ?; этот приём стоит применять, когда нужно гибко трансформировать типы без потери типобезопасности.
Уровень
Рейтинг:
4
Сложность:
5
Навыки
JavaScript
TypeScript
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию