https://bigfrontend.dev/typescript/implement-Pick-T-K
По моим наблюдениям, многие фронтендеры не всегда до конца знают TypeScript.
Базовые вещи — да 😊, а вот если копнуть чуть глубже, то многие теряются!
---
📘 Условие задачи:
Реализуйте тип
MyPick<T, K> самостоятельно.type Foo = {
a: string
b: number
c: boolean
}
type A = MyPick<Foo, 'a' | 'b'> // { a: string, b: number }
type B = MyPick<Foo, 'c'> // { c: boolean }
type C = MyPick<Foo, 'd'> // ОшибкаИспользовать встроенный
Pick<T, K> — нельзя 🚫---
🧠 Чтобы решить задачу, нужно вспомнить две вещи:
1. оператор
keyof - https://www.typescriptlang.org/docs/handbook/2/keyof-types.html2. наследование с помощью
extendsТип
MyPick принимает:* первый аргумент — исходный тип
T* второй —
K, который может быть только ключом из T---
✅ Решение:
type MyPick<T, K extends keyof T> = {
[P in K]: T[P]
}Так мы получаем новый тип, содержащий только нужные ключи и их типы 👌