0Pricing
TypeScript Academy · บทเรียน

ชนิดข้อมูลแมปด้วย +/-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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ชนิดข้อมูลแมปด้วย +/-readonly และ +/-?
  2. การแมปคีย์ใหม่และชนิดข้อมูลลิเทอรัลแม่แบบ
  3. การกำหนดชนิดข้อมูลตามรูปแบบสตริง (พารามิเตอร์เส้นทาง ชื่อเหตุการณ์)
← กลับไปที่ TypeScript Academy