typescript - เป็นไปได้ไหมที่จะวนลูปผ่านคีย์ของชนิดยูเนียน?
เป็นไปได้ไหมที่จะวนซ้ำผ่านคีย์ของประเภทยูเนียนใน Typescript เหมือนกับที่คุณสามารถใช้ Object.keys(someVar).map() ได้ ตัวอย่างเช่น?
ตัวอย่างประเภทอาจเป็น:
type Status = "status_1" | "status_2" | "status_3"
ทางเลือกหนึ่งที่ฉันเคยเห็นคือการสร้างอาเรย์ที่ไม่สามารถเปลี่ยนแปลงได้แล้วใช้ตัวดำเนินการ typeof ร่วมกับการเข้าดัชนีเพื่อเลียนแบบฟังก์ชันนี้ แต่ดูเหมือนจะยุ่งยาก
export const CaseStatuses = ["status_1", "status_2", "status_3"] as const;
export type CaseStatus = typeof CaseStatuses[number];
คำตอบ #1
นอกจากอาร์เรย์ที่ไม่สามารถเปลี่ยนแปลงได้แล้ว คุณสามารถใช้ประเภท enum แทนประเภท union ได้ มันเป็นประเภทเดียวที่ไม่ถูกลบในเวลาคอมไพล์ (Enums จะถูกแปลงเป็นออบเจ็กต์เมื่อคอมไพล์) จากนั้น ใช้ Object.keys()/Object.values() เพื่อวนลูปผ่านมัน
enum Status {
status_1 = "status_1",
status_2 = "status_2",
status_3 = "status_3",
}
// Iterate over it
console.log(Object.values(Status))
