我目前有一些看起来像这样的Typescript代码:
type UserRole = "admin" | "partner" | "associate";
type User<Role extends UserRole> = {
// ...
role: Role;
// ...
}
type Users = User<"admin"> | User<"partner"> | User<"associate">
我使用Role
的类型参数User
类型为具有超过其它性质动态类型User
在一个switch(user.role)
块中。
这里有没有办法不手动编写type Users = User<"admin"> | User<"partner"> | User<"associate">
,而是“循环”遍历UserRole字符串联合,以便将其分发给User类型?
换句话说,我怎么能这样写一个将字符串联合“分布”到我的User
类型上的类型:
type Distribute<T, S> = // ?????
type Users = Distribute<User, UserRole>; // = User<"admin"> | User<"partner"> | User<"associate">
提前致谢,
注意安全
您可以使用条件类型的分配属性。由于我们实际上并不希望使用条件类型的条件部分,因此我们将使用始终为true的条件,例如T extends T
type UserRole = "admin" | "partner" | "associate";
type User<Role extends UserRole> = {
// ...
role: Role;
// ...
}
type DistributeUsers<T extends UserRole> = T extends T ? User<T> : never
type Users = DistributeUsers<UserRole>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句