2. Cast Types Back
This is the opposite of what we just did. Instead of removing types, we're adding types back:
AnyKeyPath as? WritableKeyPath<User, String>
PartialKeyPath<User> as? KeyPath<User, Bool>
Sometimes you might need to add generics in order to keep the necessary types around to perform the correct casting. An example of this was how we wrote
instead of the simpler:
The second version would work just as fine, but it would not allow us to use Provider
as the Root
type in our WritableKeyPath<Provider, Bool>
cast.