Skip to content

TypeScript infer

Yongku cho edited this page Mar 19, 2020 · 2 revisions
type ElemType<T> = T extends (infer E)[] ? E : never;
type PropType<T, K extends keyof T> = T extends { [P in K]?: (infer R) }
  ? R
  : never;
function copyIfExist<
  F extends Pick<T, K>,
  T,
  FV extends PropType<F, K> & TV,
  TV extends PropType<T, K>,
  K extends keyof (F | T)
>(from: F, to: T | F, key: K) {
  if (key in from) {
    to[key] = from[key];
  }
}
Clone this wiki locally