destructuring - Typescript ทำการแยกค่าที่คืนจากฟังก์ชันซึ่งสามารถเป็น void หรือวัตถุ
ฉันใช้แพ็กเกจที่มีฟังก์ชันด้วยการประกาศดังต่อไปนี้:
const getList: (params?: ListRequestParams | undefined) => Promise<void | {
items: any[];
pageInfo: PageInfo;
}>
ฉันพยายามจะแยกค่าที่ส่งกลับจากการเรียกใช้ฟังก์ชันนี้ด้วย:
const {items, pageInfo} = await getList(some_param);
แต่มันใช้งานไม่ได้ อาจเป็นเพราะส่วน 'void' การใช้ค่าชั่วคราวสามารถใช้ได้ แต่ดูงุ่มง่าม
const temp = await getList(some_params);
if(temp !== undefined)
{
const { items, pageInfo } = temp;
}
แค่อยากรู้ว่ามีวิธีที่ดีกว่านี้ในการแยกโครงสร้างในกรณีนี้หรือไม่ ขอบคุณ
คำตอบ #1
จริง ๆ แล้ว เราไม่สามารถทำการแยกโครงสร้าง void/undefined ได้ และนั่นก็เป็นเรื่องดี: เป็นสิ่งจำเป็นที่จะต้องจัดการกับกรณีที่ void ถูกส่งกลับด้วย ในตัวอย่างของคุณกับเงื่อนไขป้องกัน if not undefined then ...
ถ้าคุณต้องการให้โค้ดของคุณมุ่งเน้นไปที่เส้นทางที่สำเร็จและหลีกเลี่ยงตัวแปรชั่วคราว คุณสามารถใช้ประเภท Maybe (npm) และวิธีการ map() ของมันได้:
Maybe
.ofNullable(await getList(some_params))
.map(({ items, pageInfo }) => { /*...*/ });
