ชนิดข้อมูลแมปด้วย +/-readonly และ +/-?
สำรวจชนิดข้อมูลแมปและตัวปรับแต่ง (+/-readonly, +/-optional) เพื่อสร้างรูปแบบโครงสร้างออบเจ็กต์ที่ยืดหยุ่น
ชนิดข้อมูลแมปด้วย +/-readonly และ +/-? เป็นบทเรียน TypeScript Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน TypeScript Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 3 บทเรียน
บทนำ
เป้าหมาย: เรียนรู้ชนิดข้อมูลแบบแมปพร้อมตัวปรับแต่ง เพื่อเปลี่ยนแปลงพร็อพเพอร์ตีของอ็อบเจ็กต์อย่างเป็นระบบ ชนิดข้อมูลเหล่านี้ช่วยให้คุณสร้างชนิดข้อมูลแบบอ่านอย่างเดียว ไม่บังคับ หรือบังคับได้
ชนิดข้อมูลแบบแมปพื้นฐาน
ชนิดข้อมูลแบบแมปจะวนซ้ำผ่านคีย์และนำชนิดข้อมูลของพร็อพเพอร์ตีกลับมาใช้ นี่คือพื้นฐานของการแปลงชนิดข้อมูล
type Options = { a: string; b: number }
type Clone<T> = { [K in keyof T]: T[K] }
type Copy = Clone<Options> // { a: string; b: number }เพิ่มคุณสมบัติอ่านอย่างเดียว
ใช้ +readonly เพื่อบังคับให้แก้ไขไม่ได้ พร็อพเพอร์ตีทุกตัวจะกลายเป็นแบบอ่านอย่างเดียว
type ReadonlyT<T> = { [K in keyof T]+readonly: T[K] }
interface User { id: number; name: string }
type Locked = ReadonlyT<User> // all props readonlyลบคุณสมบัติอ่านอย่างเดียว
ใช้ -readonly เพื่อลบข้อจำกัดการแก้ไขไม่ได้และทำให้กลับมาแก้ไขได้
type Mutable<T> = { [K in keyof T]-readonly: T[K] }
type Editable = Mutable<Locked> // props writable againเพิ่มคุณสมบัติเสริม
ใส่ ? หลังพร็อพเพอร์ตีเพื่อระบุว่าเป็นคุณสมบัติเสริม เหมาะสำหรับการอัปเดตการตั้งค่า
type PartialT<T> = { [K in keyof T]?: T[K] }
interface Settings { dark: boolean; lang: string }
type Maybe = PartialT<Settings> // props optionalลบคุณสมบัติเสริม
ใช้ -? เพื่อลบความเป็นคุณสมบัติเสริมและบังคับให้ต้องมีพร็อพเพอร์ตี
type RequiredT<T> = { [K in keyof T]-?: T[K] }
type Strict = RequiredT<Maybe> // props required againตรวจสอบการลบคุณสมบัติอ่านอย่างเดียว
ตรวจสอบอย่างรวดเร็ว: ไวยากรณ์ของชนิดข้อมูลแบบแมปใดใช้ลบคุณสมบัติอ่านอย่างเดียวออกจากพร็อพเพอร์ตี
ทบทวน
ทบทวน: ชนิดข้อมูลแบบแมปช่วยให้คุณใช้การแปลงกับพร็อพเพอร์ตีทั้งหมดได้: +/-readonly และ +/-? ใช้ควบคุมการแก้ไขได้และความเป็นคุณสมบัติเสริม ชนิดข้อมูลเหล่านี้เป็นพื้นฐานของ Partial, Required และ Readonly
คำถามที่พบบ่อย
บทเรียน “ชนิดข้อมูลแมปด้วย +/-readonly และ +/-?” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ชนิดข้อมูลแมปด้วย +/-readonly และ +/-?” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส TypeScript Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 3 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ชนิดข้อมูลแมปด้วย +/-readonly และ +/-?”
สำรวจชนิดข้อมูลแมปและตัวปรับแต่ง (+/-readonly, +/-optional) เพื่อสร้างรูปแบบโครงสร้างออบเจ็กต์ที่ยืดหยุ่น คุณปฏิบัติ TypeScript Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน TypeScript Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน TypeScript Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 3 บทเรียน
บทเรียน “ชนิดข้อมูลแมปด้วย +/-readonly และ +/-?” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน TypeScript Academy นี้ได้ไหม
ได้ บทเรียน TypeScript Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ชนิดข้อมูลแมปด้วย +/-readonly และ +/-?
- การแมปคีย์ใหม่และชนิดข้อมูลลิเทอรัลแม่แบบ
- การกำหนดชนิดข้อมูลตามรูปแบบสตริง (พารามิเตอร์เส้นทาง ชื่อเหตุการณ์)