Reactjs 根据道具更改状态类型-React Typescript
我有一个表单组件“AddBooking”,它采用以下道具:Reactjs 根据道具更改状态类型-React Typescript,reactjs,typescript,use-state,Reactjs,Typescript,Use State,我有一个表单组件“AddBooking”,它采用以下道具: type AddBookingProps = { edit?: Booking }; 如果传入这个“编辑”属性,我想用设置的值呈现表单。如果未传入,它将成为“创建”空白表单。这就是我试图利用国家的方式 const [currentBooking, setBooking] = useState<NewBooking | Booking>( edit ? edit : emptyBooking ); 我在调用editBo
type AddBookingProps = { edit?: Booking };
如果传入这个“编辑”属性,我想用设置的值呈现表单。如果未传入,它将成为“创建”空白表单。这就是我试图利用国家的方式
const [currentBooking, setBooking] = useState<NewBooking | Booking>(
edit ? edit : emptyBooking
);
我在调用editBooking时遇到类型错误:
“NewBooking | Booking”类型的参数不能分配给“Booking”类型的参数。
类型“NewBooking”中缺少属性“\u id”,但类型“Booking”中需要属性“\u id”
你知道我怎样才能在没有“任何”类型的情况下解决这个问题吗?
非常感谢这可能是一个类型防护装置的使用案例
您定义的一个函数,用于检查
\u id
是否实际位于类型上。这可能是一个很好的做法,因为您不希望用户在NewBooking
中根据需要添加\u id
并在清空booking
中将\u id
设置为0时编辑尚未存在的预订。非常感谢。对于正在阅读的其他人,上面的确切链接已被弃用,因此我在此处引用的新页面:。我将if(编辑)更改为if(currentBooking中的“\u id”)
if (edit) {
bookingContext.editBooking(currentBooking);
handleClose();
} else {
bookingContext.addBooking({
...currentBooking,
bookedBy: uContext.user.username
});
handleClose();
}