I've been working in a project that has a lot of construction by composition. Read: parameterless constructors, and post-constructor initialization by factory methods. However, as the shapes of the components change, some required inputs can be missed and are only discovered in runtime logging.
We started looking at the idea of some Input<T> utility typing, and a related Pick<T> type extension that allows the required properties of a class to be extracted.
Part of me likes this, but part of me thinks it's a little smelly too. Looking for feedback:
[TypeScript Playground Link](https://www.typescriptlang.org/play/?ssl=37&ssc=43&pln=1&pc=1#code/CYUwxgNghgTiAEYD2A7AzgF3gSRQBwFcMAhGKFYALngJ
