dot-prop-immutable icon indicating copy to clipboard operation
dot-prop-immutable copied to clipboard

[Proposal] Strongly typed Pick / Omit

Open patarapolw opened this issue 5 years ago • 0 comments

Actually, it is as simple as

import dotProp from 'dot-prop-immutable'

export function pick<T> (el: T, select: (string | number)[]): Partial<T> {
  let p = {} as Partial<T>

  select.map((k) => {
    p = dotProp.set(p, k, dotProp.get(el, k))
  })

  return p
}

export function omit<T> (el: T, deSelect: (string | number)[]): Partial<T> {
  let p = el as Partial<T>

  deSelect.map((k) => {
    p = dotProp.delete(el, k)
  })

  return p
}

However, I cannot make it strongly typed for select / deSelect that contains no dot...

patarapolw avatar Jun 19 '20 03:06 patarapolw