Перейти к основному содержимому
Об авторе
Проекты
Знания
Знания/TypeScript/pick-by-type

Как создать `PickByType` и `OmitByType` — фильтрацию свойств по типу значения?

УглублённыйУтилитарные типыПродвинутые типы
type PickByType<T, U> = {
  [K in keyof T as T[K] extends U ? K : never]: T[K]
};

type OmitByType<T, U> = {
  [K in keyof T as T[K] extends U ? never : K]: T[K]
};
  • Использует key remapping (TS 4.1+): as в mapped types
  • Фильтрация через never: ключ, ремапленный в never, исключается
  • Пример: PickByType<User, string> — только строковые свойства
  • Главная
  • Об авторе
  • Проекты
  • Знания
Логотип nKolmykov