ประกอบฟังก์ชันและอาร์กิวเมนต์อย่างปลอดภัย
ประกอบฟังก์ชันโดยคงทูเพิลอาร์กิวเมนต์และชนิดข้อมูลผลลัพธ์ไว้ พร้อมเขียนตัวช่วย pipe/compose ที่ยังคงปลอดภัยด้านชนิดข้อมูล
ประกอบฟังก์ชันและอาร์กิวเมนต์อย่างปลอดภัย เป็นบทเรียน TypeScript Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน TypeScript Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 3 บทเรียน
บทนำ
เป้าหมาย: ประกอบฟังก์ชันโดยไม่สูญเสียข้อมูลอาร์กิวเมนต์ ทูเพิลอาร์กิวเมนต์แบบแปรผันจำนวนช่วยให้คุณคงทูเพิลอาร์กิวเมนต์ทั้งหมดไว้ตลอดตัวช่วย pipe/การประกอบฟังก์ชัน
- คงจำนวนอาร์กิวเมนต์และชื่อไว้
- รักษาการอนุมานตลอดแต่ละขั้น
- ไม่มี
anyและไม่มีการแปลงชนิดข้อมูลแบบบังคับ
การประกอบฟังก์ชันพื้นฐาน
การประกอบฟังก์ชัน: ฟังก์ชันแรกจะรับอาร์กิวเมนต์ทั้งหมด (...args: A) ส่วนฟังก์ชันที่สองจะรับค่าที่ส่งกลับจากฟังก์ชันแรก โดยคงจำนวนอาร์กิวเมนต์และชนิดข้อมูลไว้
function compose<A extends any[], B, C>(g: (b: B) => C, f: (...args: A) => B) {
return (...args: A): C => g(f(...args))
}
function toLen(a: string, n: number) { return `${a}${n}`.length }
function isEven(x: number) { return x % 2 === 0 }
const c1 = compose(isEven, toLen)
const ok = c1("id", 99) // booleanตัวช่วย pipe
pipe ใช้แนวคิดเดียวกันในลำดับย้อนกลับ ทำให้การไหลของการอนุมานเข้าใจได้ง่ายกว่า
function pipe<A extends any[], B, C>(f: (...args: A) => B, g: (b: B) => C) {
return (...args: A): C => g(f(...args))
}
const p1 = pipe(toLen, isEven)
const ok2 = p1("xx", 7) // booleanการประกอบฟังก์ชัน 3 รายการขึ้นไป
เมื่อมีฟังก์ชัน 3 รายการขึ้นไป ให้ทำซ้ำรูปแบบเดิม โดยคงทูเพิล A ไว้และเชื่อมค่าที่ส่งกลับระหว่างทางต่อกัน
function compose3<A extends any[], B, C, D>(h: (c: C) => D, g: (b: B) => C, f: (...args: A) => B) {
return (...args: A): D => h(g(f(...args)))
}
function toUpper(s: string) { return s.toUpperCase() }
const c3 = compose3(toUpper, (x: number) => x.toString(), toLen)
const val = c3("a", 5) // "2" → then upper → "2"ผูกอาร์กิวเมนต์ส่วนต้น
bindHead: เติมอาร์กิวเมนต์ทั้งหมดไว้ด้านหน้าและสร้างฟังก์ชันที่ไม่มีอาร์กิวเมนต์ ใช้เพื่อการสาธิตเท่านั้น (จริง ๆ แล้วสามารถทำให้ยืดหยุ่นขึ้นได้ด้วย Parameters)
function bindHead<A extends any[], B>(fn: (...args: A) => B, ...head: A) {
return (...rest: []): B => fn(...head)
}
const bh = bindHead(toLen, "x", 42)
const r = bh() // numberเคล็ดลับ
เคล็ดลับ:
หลีกเลี่ยง any ในตัวช่วย เพราะจะทำลายสายการอนุมาน
หากจำเป็น ให้ระบุชนิดข้อมูลที่ส่งกลับอย่างชัดเจน วิธีนี้ช่วยเพิ่มประสบการณ์ของนักพัฒนา
สำหรับการประกอบหลายขั้น ให้เลือกใช้ตัวช่วยขนาดเล็กแทนตัวช่วยทั่วไปที่ซับซ้อนเกินไป
ตรวจสอบลายเซ็นการประกอบฟังก์ชัน
ตรวจสอบอย่างรวดเร็ว: ลายเซ็นการประกอบฟังก์ชันใดคงทูเพิลอาร์กิวเมนต์ต้นทางไว้
ทบทวน
ทบทวน: คุณเขียนการประกอบฟังก์ชันและ pipe โดยคงอาร์กิวเมนต์ด้วยทูเพิลแบบแปรผันจำนวน ทำให้สร้างสายการทำงานได้โดยไม่สูญเสียจำนวนอาร์กิวเมนต์และชนิดข้อมูล
คำถามที่พบบ่อย
บทเรียน “ประกอบฟังก์ชันและอาร์กิวเมนต์อย่างปลอดภัย” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ประกอบฟังก์ชันและอาร์กิวเมนต์อย่างปลอดภัย” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส TypeScript Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 3 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ประกอบฟังก์ชันและอาร์กิวเมนต์อย่างปลอดภัย”
ประกอบฟังก์ชันโดยคงทูเพิลอาร์กิวเมนต์และชนิดข้อมูลผลลัพธ์ไว้ พร้อมเขียนตัวช่วย pipe/compose ที่ยังคงปลอดภัยด้านชนิดข้อมูล คุณปฏิบัติ TypeScript Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน TypeScript Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน TypeScript Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน
บทเรียน “ประกอบฟังก์ชันและอาร์กิวเมนต์อย่างปลอดภัย” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน TypeScript Academy นี้ได้ไหม
ได้ บทเรียน TypeScript Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- สมาชิก rest ของทูเพิลและชนิดข้อมูลเคอร์รี
- ประกอบฟังก์ชันและอาร์กิวเมนต์อย่างปลอดภัย
- ตัวสร้างที่มีชนิดข้อมูลเข้มงวด