Skip to content

Utility Types ของ TypeScript อธิบาย

Utility types ในตัวของ TypeScript พร้อมคีย์เวิร์ดที่ใช้คู่กัน จัดกลุ่มตามหน้าที่: ปรับรูปร่างออบเจกต์ กรองยูเนียน อธิบายฟังก์ชัน แปลงสตริงลิเทอรัล และดึงประเภทจากค่า แต่ละแถวแสดงประเภทพร้อม alias ที่คุณจะเขียนขึ้นจริง ๆ

utility type คือฟังก์ชันเจเนอริกสำหรับประเภท: รับประเภทหนึ่งหรือสองตัวแล้วคืนประเภทใหม่ คุณจึงไม่ต้องเขียนรูปร่างทุกแบบด้วยมือเอง มันมีประโยชน์ที่สุดกับประเภทแบบ derive คือกรณีที่แหล่งความจริงเป็นประเภทอื่นหรือเป็นค่า และคุณอยากให้ประเภทของคุณตามมันโดยอัตโนมัติ กฎง่าย ๆ คือ derive แทนการเขียนซ้ำ: แก้ต้นทางแล้วประเภทที่ derive มาจะเปลี่ยนตามทันที

ตารางอ้างอิง · 22 รายการ
22 of 22 rows
รูปร่างออบเจกต์
T ที่ทุก property เป็น optionaltype Update = Partial<User>
T ที่ทุก property เป็น requiredtype Strict = Required<Opts>
T ที่ทุก property เป็น readonlytype Frozen = Readonly<User>
T ที่เหลือเฉพาะ key ที่อยู่ใน Ktype Preview = Pick<User, "id" | "name">
T ที่เอา key ใน K ออกtype SafeUser = Omit<User, "password">
ออบเจกต์ที่มี key เป็น K และ value เป็น Vtype Scores = Record<string, number>
การกรองยูเนียน
ยูเนียน U ที่ตัดสมาชิกที่ assign ให้ X ได้ออกtype NoNull = Exclude<T, null>
สมาชิกของ U ที่ assign ให้ X ได้type OnlyStr = Extract<T, string>
T ที่เอา null และ undefined ออกtype Def = NonNullable<T>
ประเภทของฟังก์ชัน
ทูเพิลของประเภทพารามิเตอร์ของฟังก์ชัน Ftype P = Parameters<typeof fn>
ประเภทที่ฟังก์ชัน F คืนค่าtype R = ReturnType<typeof fn>
ทูเพิลของประเภทพารามิเตอร์ของคอนสตรักเตอร์ Ftype C = ConstructorParameters<typeof Date>
ประเภทอินสแตนซ์ที่คอนสตรักเตอร์ F สร้างขึ้นtype D = InstanceType<typeof Date>
ประเภทที่ Promise resolve ให้แบบเรียกซ้ำtype Data = Awaited<Promise<User>>
การแปลงสตริงลิเทอรัล
สตริงลิเทอรัล S แบบตัวพิมพ์ใหญ่type A = Uppercase<"abc"> // "ABC"
สตริงลิเทอรัล S แบบตัวพิมพ์เล็กtype B = Lowercase<"ABC"> // "abc"
S ที่อักขระตัวแรกเป็นตัวพิมพ์ใหญ่type C = Capitalize<"abc"> // "Abc"
S ที่อักขระตัวแรกเป็นตัวพิมพ์เล็กtype D = Uncapitalize<"Abc"> // "aBc"
คีย์เวิร์ดที่เกี่ยวข้อง
ยูเนียนของ property key ของประเภทออบเจกต์ Ttype K = keyof User
ประเภทของค่า โดยไม่ต้องเขียนซ้ำอีกtype Config = typeof defaults
จับประเภทไว้ในเงื่อนไขเพื่อใช้ซ้ำtype El<T> = T extends Array<infer I> ? I : never
เลือกประเภท X หรือ Y ตามว่า T assign ให้ U ได้หรือไม่type IsStr<T> = T extends string ? true : false