This example shows how to wrap all properties of an interface or tuple dynamically with a wrapper type. This is possible by declaring a dynamic index with a key variable which maps property keys with the original type and using this key to refer to the wrapped type property.
The second example is more dynamic by providing a type descriptor T
which provides the wrapper type which then receives the keys and types of the wrapped type.