Is there a way to use varadic arguments to recurse a type?
So like
pluck({a: {b: 2}}, "a", "b") will be type safe and can somehow store the state of that type?