The Lifted type allows us to express the operation of taking a type,
with potentially deeply nested objects and arrays and to then get a type with
the same properties, except whose property types are now Outputs of the
original property type.
Lifted is somewhat the opposite of Unwrap. Its primary
purpose is to allow an instance of Output<SomeType> to provide simple
access to the properties of SomeType directly on the instance itself
(instead of haveing to use Output.apply).
This lifting only happens through simple objects and arrays. Functions, for
example, are not lifted. So you cannot do:
The Lifted type allows us to express the operation of taking a type, with potentially deeply nested objects and arrays and to then get a type with the same properties, except whose property types are now Outputs of the original property type.
For example:
Then
Lifted<X>
would be equivalent to:Lifted is somewhat the opposite of Unwrap. Its primary purpose is to allow an instance of
Output<SomeType>
to provide simple access to the properties ofSomeType
directly on the instance itself (instead of haveing to use Output.apply).This lifting only happens through simple objects and arrays. Functions, for example, are not lifted. So you cannot do:
Instead, you still need to write;