Back to Type Challenges

README

questions/00956-hard-deeppick/README.md

latest1.6 KB
Original Source
<!--info-header-start--><h1>DeepPick </h1><blockquote><p>by hiroya iizuka <a href="https://github.com/hiroyaiizuka" target="_blank">@hiroyaiizuka</a></p></blockquote><p><a href="https://tsch.js.org/956/play" target="_blank"></a> </p><!--info-header-end-->

Implement a type DeepPick, that extends Utility types Pick. A type takes two arguments.

For example:

ts
type obj = {
  name: 'hoge', 
  age: 20,
  friend: {
    name: 'fuga',
    age: 30,
    family: {
      name: 'baz',  
      age: 1 
    }
  }
}

type T1 = DeepPick<obj, 'name'>   // { name : 'hoge' }
type T2 = DeepPick<obj, 'name' | 'friend.name'>  // { name : 'hoge' } & { friend: { name: 'fuga' }}
type T3 = DeepPick<obj, 'name' | 'friend.name' |  'friend.family.name'>  // { name : 'hoge' } &  { friend: { name: 'fuga' }} & { friend: { family: { name: 'baz' }}}

<!--info-footer-start-->

<a href="../../README.md" target="_blank"></a> <a href="https://tsch.js.org/956/answer" target="_blank"></a> <a href="https://tsch.js.org/956/solutions" target="_blank"></a> <!--info-footer-end-->