Напиши тип Senior Условные и mapped-типы обновлено

DeepPartial

Вопрос

Рекурсивный Partial: необязательными становятся и вложенные поля.

type DeepPartial<T> = /* ? */;

Попробуйте сами

Напишите тип, как написали бы в коде.

Показать ответ и разбор

Коротко

Правильный тип: { [K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K] }. Ответ Почему так Рекурсивные утилиты собираются из mapped type + conditional.

Правильный тип

{ [K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K] }

Разбор

Ответ

{ [K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K] }

Почему так

Рекурсивные утилиты собираются из mapped type + conditional. Практический нюанс: такая версия применит рекурсию и к массивам с функциями - в бою добавляют отдельные ветки для них.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.