สมาชิก rest ของทูเพิลและชนิดข้อมูลเคอร์รี
ใช้สมาชิก rest ของทูเพิลเพื่อรับรายการอาร์กิวเมนต์จำนวนเท่าใดก็ได้ และสร้างตัวช่วยเคอร์รีขนาดเล็กด้วยการอนุมานชนิดข้อมูล
สมาชิก rest ของทูเพิลและชนิดข้อมูลเคอร์รี เป็นบทเรียน TypeScript Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน TypeScript Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 3 บทเรียน
บทนำ
เป้าหมาย: จับรายการอาร์กิวเมนต์ด้วยทูเพิลแบบแปรผันจำนวน และเขียนตัวช่วยเคอร์รีที่มีขนาดเล็กแต่ใช้งานได้จริง ด้วยเหตุนี้ APIs ของคุณจึงยังคงยืดหยุ่น และยังคงรักษาความปลอดภัยด้านชนิดข้อมูลไว้
พื้นฐานของทูเพิลแบบแปรผันจำนวน
รูปแบบ [...A, L]: เริ่มด้วยอาร์กิวเมนต์ส่วนต้น (ทูเพิล A) แล้วตามด้วยอาร์กิวเมนต์สุดท้าย (L) รูปแบบนี้เป็นหัวใจสำคัญของตัวช่วยต่าง ๆ
type HeadTail<A extends any[], L> = [...A, L]
function callWithLast<A extends any[], L, R>(fn: (...args: [...A, L]) => R, last: L, ...head: A): R {
return fn(...head, last)
}
// Example
function join3(a: string, b: number, c: boolean) { return `${a}-${b}-${c}` }
const r = callWithLast(join3, true, "x", 42) // ok → stringตัวช่วยเคอร์รี
เคอร์รีขนาดเล็ก: ด้วย [...A, L] ชนิดข้อมูลของทั้งส่วนต้นและส่วนสุดท้ายจึงถูกต้อง
function curryLast<A extends any[], L, R>(fn: (...args: [...A, L]) => R) {
return (last: L) => (...head: A) => fn(...head, last)
}
const curried = curryLast(join3)
const out = curried(true)("x", 42) // stringcurryFromFn ทั่วไป
วิธีแก้ปัญหาทั่วไป: อนุมานส่วนหางและส่วนสุดท้ายจาก Parameters<F> เพื่อคงจำนวนพารามิเตอร์และชนิดข้อมูลของพารามิเตอร์เหล่านั้นไว้
type Fn = (...args: any[]) => any
type Tail<T extends any[]> = T extends [...infer H, any] ? H : never
type Last<T extends any[]> = T extends [...any[], infer L] ? L : never
function curryFromFn<F extends Fn>(fn: F) {
type A = Tail<Parameters<F>>
type L = Last<Parameters<F>>
return (last: L) => (...head: A) => fn(...head, last)
}
const cur = curryFromFn(join3)
const o2 = cur(true)("x", 42) // still stringประกอบฟังก์ชันด้วยทูเพิล
ส่งข้อมูลจาก A → B → C ด้วยการประกอบฟังก์ชัน โดยคงอาร์กิวเมนต์ในทูเพิล A ไว้และเชื่อมชนิดข้อมูลที่ส่งกลับต่อกัน
function compose<A extends any[], B, C>(g: (b: B) => C, f: (...args: A) => B) {
return (...args: A): C => g(f(...args))
}
function len(a: string, b: number) { return `${a}${b}`.length }
function isEven(n: number) { return n % 2 === 0 }
const comp = compose(isEven, len)
const ok = comp("id", 99) // booleanเคล็ดลับ
เคล็ดลับ:
ทูเพิลแบบแปรผันจำนวนต้องใช้ TS 4.0 ขึ้นไป ควรอัปเดตเป้าหมายให้เป็นปัจจุบัน
ช่วยชี้แนะคอมไพเลอร์: บางครั้งการเขียนพารามิเตอร์ชนิดข้อมูลอย่างชัดเจนจะช่วยปรับปรุงการอนุมาน
การพยายามทำให้การออกแบบ APIs ทั่วไปเกินไปจะเพิ่มความซับซ้อน ตัวช่วยที่เรียบง่ายมีประสิทธิภาพมากที่สุด
ตรวจสอบลายเซ็นของเคอร์รี
ตรวจสอบอย่างรวดเร็ว: ลายเซ็นใดจับอาร์กิวเมนต์ any ใน A และอาร์กิวเมนต์สุดท้าย L สำหรับตัวช่วยเคอร์รี
ทบทวน
ทบทวน: จำลองรายการอาร์กิวเมนต์ด้วย [...A, L] เขียนตัวช่วยเคอร์รีและการประกอบฟังก์ชันขนาดเล็ก และคงชนิดข้อมูลไว้โดยอัตโนมัติ
คำถามที่พบบ่อย
บทเรียน “สมาชิก rest ของทูเพิลและชนิดข้อมูลเคอร์รี” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “สมาชิก rest ของทูเพิลและชนิดข้อมูลเคอร์รี” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส TypeScript Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 3 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “สมาชิก rest ของทูเพิลและชนิดข้อมูลเคอร์รี”
ใช้สมาชิก rest ของทูเพิลเพื่อรับรายการอาร์กิวเมนต์จำนวนเท่าใดก็ได้ และสร้างตัวช่วยเคอร์รีขนาดเล็กด้วยการอนุมานชนิดข้อมูล คุณปฏิบัติ TypeScript Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน TypeScript Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน TypeScript Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 3 บทเรียน
บทเรียน “สมาชิก rest ของทูเพิลและชนิดข้อมูลเคอร์รี” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน TypeScript Academy นี้ได้ไหม
ได้ บทเรียน TypeScript Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- สมาชิก rest ของทูเพิลและชนิดข้อมูลเคอร์รี
- ประกอบฟังก์ชันและอาร์กิวเมนต์อย่างปลอดภัย
- ตัวสร้างที่มีชนิดข้อมูลเข้มงวด