[英]Typescript UseState Union Type
我有这种联合类型:
export interface IUserInfosLogin {
usernameOrEmail: string;
password: string;
}
export interface IUserInfosRegister {
username: string;
email: string;
password: string;
passwordConfirm: string;
}
export type TUserInfos = IUserInfosLogin | IUserInfosRegister;
而且我希望const [userInfos, setUserInfos] = useState<TUserInfos>{}
只采用其中一种类型,但是当我尝试访问userInfos
时,只有password
可用。
有人可以向我解释吗?
否则,您将需要一个歧视联盟,对于 TypeScript 它可以是一个或另一个,因此它只识别它们共享的内容,在您的情况下为password
。 请注意,两者都添加了type
:
export interface IUserInfosLogin {
type:"login";
usernameOrEmail: string;
password: string;
}
export interface IUserInfosRegister {
type:"register"
username: string;
email: string;
password: string;
passwordConfirm: string;
}
export type TUserInfos = IUserInfosLogin | IUserInfosRegister;
您需要进行类型检查才能拥有一个或另一个:
if(userInfo.type === "login"{
// you can access IUserInfosLogin properties here
}else{
// you can access IUserInfosRegister properties here
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.