TypeScript · Senior · Запитання 6 з 75
Як реалізувати DeepPartial<T>?
type DeepPartial<T> = T extends object
? { [K in keyof T]?: DeepPartial<T[K]> }
: T;- ✓Правильна відповідь: Рекурсивним mapped type із
?на всіх рівнях - 2Вбудованою утилітою
Partial<T, 'deep'>з lib.d.ts - 3Ніяк: рекурсивні псевдоніми типів у TypeScript заборонені
Пояснення
Псевдоніми типів можуть посилатися на себе. У реальній реалізації варто окремо обробити масиви, функції й Date, щоб не «розбирати» їх на властивості. Глибока рекурсія має ліміт інстанціювання, тому величезні типи сповільнюють компілятор.