But admin should have type Admin.
Argument of the function is type T and so is the return type. In your example is the type of argument Admin, therefor is the return type also Admin.
Type is Admin but the structure which is returned has kind property with value customer, so its not valid member of the type Admin.
Yes, it's not valid. But admin should always be type of Admin, or an error should occur (like in this case).
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.