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

รูปแบบการใช้ satisfies ในทางปฏิบัติ

ใช้ satisfies กับออบเจ็กต์การกำหนดค่าและตารางค้นหา

รูปแบบการใช้ satisfies ในทางปฏิบัติ เป็นบทเรียน TypeScript Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน TypeScript Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 4 บทเรียน

ตรวจสอบความถูกต้องของชุดสี

รูปแบบที่ใช้กันทั่วไปคือ satisfies Record<string, Color> สำหรับ palette โดยจะตรวจสอบค่าทุกค่าให้เป็นสีที่ถูกต้อง ขณะที่คีย์ยังคงตรงตามจริงเพื่อใช้กับการเติมข้อความอัตโนมัติ

type Color = "red" | "green" | "blue";
const palette = {
  primary: "blue",
  secondary: "green"
} satisfies Record<string, Color>;
console.log(palette.primary);

ตรวจจับค่าของ palette ที่ไม่ถูกต้อง

หากค่าใดไม่ใช่ Color ที่ถูกต้อง satisfies จะแจ้งข้อผิดพลาด ขณะที่คีย์ยังคงมีชนิดที่ตรงตามจริง

type Color = "red" | "green" | "blue";
// const bad = { primary: "purple" } satisfies Record<string, Color>; // Error
const ok = { primary: "red" } satisfies Record<string, Color>;
console.log(ok.primary);

คงการเติมข้อความอัตโนมัติสำหรับคีย์

เนื่องจากคีย์ที่อนุมานได้คือ "primary" | "secondary" โปรแกรมแก้ไขจึงเติมคีย์เหล่านี้โดยอัตโนมัติ ต่างจากการระบุชนิดด้วย Record แบบปกติซึ่งจะทำให้คีย์เฉพาะหายไป

type Color = "red" | "green" | "blue";
const palette = { primary: "red", accent: "blue" } satisfies Record<string, Color>;
// palette.<autocomplete: primary, accent>
console.log(palette.accent);

ตรวจสอบความถูกต้องของแผนที่เส้นทาง

แผนที่เส้นทางก็ได้รับประโยชน์เช่นกัน โดยค่าต้องตรงกับโครงสร้างของตัวจัดการ ขณะที่ชื่อเส้นทางยังคงเป็นชื่อที่รู้จักสำหรับตัวช่วยการนำทาง

type Route = { method: "GET" | "POST"; path: string };
const routes = {
  home: { method: "GET", path: "/" },
  login: { method: "POST", path: "/login" }
} satisfies Record<string, Route>;
console.log(routes.login.method);

การใช้ดัชนีในแผนที่

เมื่อคีย์ยังคงอยู่ คุณสามารถสร้างชนิดของชื่อเส้นทางที่ถูกต้องและใช้ดัชนีเข้าถึงชนิดของแผนที่ได้อย่างปลอดภัยตามชนิด

type Route = { method: string; path: string };
const routes = {
  home: { method: "GET", path: "/" },
  about: { method: "GET", path: "/about" }
} satisfies Record<string, Route>;
type RouteName = keyof typeof routes; // "home" | "about"
const pick: RouteName = "about";
console.log(routes[pick].path);

config ที่มีค่าหลายรูปแบบและมีชนิดกำกับ

satisfies ใช้ได้แม้ค่าจะมีโครงสร้างแตกต่างกัน เพียงจำกัดด้วยชนิดยูเนียน แล้วค่าทุกค่าจะได้รับการตรวจสอบเทียบกับชนิดนั้น

type Setting = number | boolean | string;
const config = {
  retries: 3,
  verbose: true,
  region: "eu"
} satisfies Record<string, Setting>;
console.log(config.retries, config.verbose);

ตารางค้นหาแบบคล้ายอีนัม

สร้างตารางค้นหาที่ตรวจสอบเทียบกับชนิดของค่า พร้อมคงแต่ละรายการให้ตรงตามจริงสำหรับการใช้งานในภายหลัง

type Status = "active" | "inactive";
const userStatus = {
  alice: "active",
  bob: "inactive"
} satisfies Record<string, Status>;
const s: "active" = userStatus.alice;
console.log(s);

ใช้คู่กับ as const

ใช้ as const ร่วมกับ satisfies เพื่อสร้างข้อมูลที่เปลี่ยนแปลงไม่ได้ในทุกระดับและผ่านการตรวจสอบความถูกต้อง โดย as const จะทำให้ข้อมูลไม่เปลี่ยนแปลง และ satisfies จะตรวจสอบข้อมูล

type Color = "red" | "blue";
const theme = {
  primary: "red",
  secondary: "blue"
} as const satisfies Record<string, Color>;
console.log(theme.primary);

ตรวจสอบช่วงตัวเลขด้วยชนิด

คุณสามารถจำกัดค่าให้เป็นยูเนียนของลิเทอรัลตัวเลขเพื่อจำลองชุดตัวเลือกที่กำหนดตายตัว โดยตรวจสอบความถูกต้องตั้งแต่เวลานิยาม

type Level = 1 | 2 | 3;
const levels = {
  easy: 1,
  medium: 2,
  hard: 3
} satisfies Record<string, Level>;
console.log(levels.hard);

แผนที่แฟล็กฟีเจอร์

ตัวอย่าง config ของแฟล็กฟีเจอร์ที่ใช้งานได้จริง: คีย์คือชื่อแฟล็กที่เติมข้อความอัตโนมัติได้ และค่าคือบูลีนที่ satisfies ตรวจสอบความถูกต้อง

const flags = {
  newDashboard: true,
  betaSearch: false
} satisfies Record<string, boolean>;
type Flag = keyof typeof flags;
const f: Flag = "betaSearch";
console.log(flags[f]);

เหตุใดรูปแบบนี้จึงโดดเด่น

ไม่ว่าจะเป็น palette เส้นทาง หรือ flags, satisfies Record<...> ให้ค่าที่ผ่านการตรวจสอบความถูกต้อง พร้อมคีย์และลิเทอรัลที่แม่นยำ จึงเป็นจุดสมดุลที่เหมาะสำหรับ config แบบมีชนิดในชีวิตประจำวัน

type Color = "red" | "green" | "blue";
const ui = { brand: "green", warn: "red" } satisfies Record<string, Color>;
console.log(Object.keys(ui).join(","));

ตรวจสอบความเข้าใจอย่างรวดเร็ว: satisfies ในทางปฏิบัติ

ทดสอบความเข้าใจของคุณเกี่ยวกับรูปแบบ satisfies ในทางปฏิบัติ

ทบทวน: รูปแบบ satisfies ในทางปฏิบัติ

คุณได้นำ satisfies Record<string, Color> ไปใช้กับ palette, แผนที่เส้นทาง flags และตารางค้นหา โดยคงคีย์และลิเทอรัลที่ตรงตามจริงไว้เพื่อการเติมข้อความอัตโนมัติ พร้อมตรวจสอบความถูกต้องของทุกค่า

type Color = "red" | "blue";
const theme = { bg: "blue", fg: "red" } satisfies Record<string, Color>;
console.log(theme.bg, theme.fg);

คำถามที่พบบ่อย

บทเรียน “รูปแบบการใช้ satisfies ในทางปฏิบัติ” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “รูปแบบการใช้ satisfies ในทางปฏิบัติ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส TypeScript Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “รูปแบบการใช้ satisfies ในทางปฏิบัติ”

ใช้ satisfies กับออบเจ็กต์การกำหนดค่าและตารางค้นหา คุณปฏิบัติ TypeScript Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน TypeScript Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน TypeScript Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “รูปแบบการใช้ satisfies ในทางปฏิบัติ” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน TypeScript Academy นี้ได้ไหม

ได้ บทเรียน TypeScript Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. เหตุใดจึงมี satisfies
  2. satisfies เทียบกับคำอธิบายชนิดข้อมูล
  3. satisfies เทียบกับการยืนยันด้วย as
  4. รูปแบบการใช้ satisfies ในทางปฏิบัติ
← กลับไปที่ TypeScript Academy