Frontend Academy · บทเรียน

ชนิดข้อมูลพื้นฐาน ยูเนียน และชื่อแทนชนิดข้อมูล

กำกับชนิดให้ตัวแปรด้วย string, number, boolean และอาร์เรย์ สร้างชนิดยูเนียนด้วย | และตั้งชื่อที่อ่านง่ายด้วยชื่อแทนชนิดข้อมูล

บทเรียน 2 จาก 413 ขั้นตอน

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

การใส่คำอธิบายให้ตัวแปร

เพิ่มคำอธิบายชนิดข้อมูลด้วยเครื่องหมายทวิภาคหลังชื่อตัวแปร TypeScript จะอนุมานชนิดข้อมูลเมื่อทำได้ ให้ใส่คำอธิบายอย่างชัดเจนเมื่อการอนุมานไม่ชัดเจนหรือเมื่อต้องการใช้เป็นเอกสารอธิบาย

let score: number = 0;
const greeting: string = 'Hello';
let active: boolean = true;
let data: null = null;
let placeholder: undefined;

// Inferred (no annotation needed):
const pi = 3.14;  // TypeScript knows this is number

ชนิดข้อมูลพื้นฐาน

ชนิดข้อมูลพื้นฐานของ TypeScript สอดคล้องกับชนิดข้อมูลพื้นฐานของ JavaScript ได้แก่ string สตริง, number ตัวเลข (ไม่มีการแยกระหว่างจำนวนเต็มกับจำนวนทศนิยม), boolean ค่าบูลีน, null, undefined, symbol และ bigint

function greet(name: string): string {
  return `Hello, ${name}`;
}

function double(n: number): number {
  return n * 2;
}

function toggle(active: boolean): boolean {
  return !active;
}

อาร์เรย์

กำหนดชนิดให้อาร์เรย์ด้วย Type[] หรือชนิดทั่วไป Array<Type> ทั้งสองรูปแบบมีความหมายเทียบเท่ากัน

const names: string[] = ['Alice', 'Bob'];
const scores: number[] = [98, 87, 72];
const flags: boolean[] = [true, false, true];

// Generic syntax:
const items: Array<string> = ['a', 'b'];

ชนิดยูเนียน: |

ชนิดยูเนียนทำให้ตัวแปรสามารถเก็บค่าได้หนึ่งชนิดจากหลายชนิด ให้ใช้ตัวดำเนินการไปป์ | TypeScript จะจำกัดชนิดข้อมูลให้แคบลงภายในเงื่อนไข

function formatId(id: number | string): string {
  if (typeof id === 'number') {
    return `#${id.toString().padStart(6, '0')}`; // id is narrowed to number
  }
  return id.toUpperCase(); // id is narrowed to string
}

ชนิดค่าตามตัวอักษร

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

type Direction = 'north' | 'south' | 'east' | 'west';
type Status = 'pending' | 'active' | 'cancelled';
type DiceRoll = 1 | 2 | 3 | 4 | 5 | 6;

function move(dir: Direction) { /* ... */ }
move('north'); // OK
move('up');    // Error: Argument not assignable

นามแฝงชนิดข้อมูล: ชนิด

คำสำคัญ type ใช้สร้างนามแฝงชนิดข้อมูล ซึ่งเป็นชื่อที่นำกลับมาใช้ซ้ำได้สำหรับชนิดข้อมูลใด ๆ นามแฝงใช้ได้กับชนิดข้อมูลพื้นฐาน ชนิดยูเนียน ออบเจ็กต์ ทูเพิล และชนิดข้อมูลแบบประกอบที่ซับซ้อน

type UserId = string | number;
type RGB = [number, number, number]; // tuple
type Callback = (event: MouseEvent) => void;

const userId: UserId = 42;
const red: RGB = [255, 0, 0];
const handler: Callback = (e) => console.log(e.type);

ชนิดออบเจ็กต์ด้วย type

อธิบายโครงสร้างของออบเจ็กต์ด้วยนามแฝงชนิดข้อมูล ทำให้พร็อพเพอร์ตีเป็นตัวเลือกได้ด้วย ? และกำหนดให้เป็นแบบอ่านอย่างเดียวด้วย readonly

type User = {
  id: number;
  name: string;
  email: string;
  role?: 'admin' | 'user'; // optional
  readonly createdAt: Date; // can't reassign
};

const user: User = {
  id: 1,
  name: 'Alice',
  email: 'alice@example.com',
  createdAt: new Date()
};

ชนิดอินเตอร์เซกชัน: &

รวมชนิดข้อมูลหลายชนิดด้วยตัวดำเนินการ & ชนิดผลลัพธ์จะมีพร็อพเพอร์ตีทั้งหมดของทั้งสองชนิด เหมาะสำหรับการขยายชนิดข้อมูล

type Timestamped = {
  createdAt: Date;
  updatedAt: Date;
};
type UserWithTimestamp = User & Timestamped;
// Has all User properties AND createdAt/updatedAt

ชนิด any — ทางหนีฉุกเฉิน

any ปิดการตรวจสอบชนิดข้อมูลสำหรับค่าใดค่าหนึ่ง ชนิดนี้จะแพร่ต่อไปยังค่าที่สร้างจาก any ซึ่งจะมีชนิดเป็น any เช่นกัน ควรใช้เป็นทางเลือกสุดท้ายระหว่างการย้ายระบบ และไม่ควรใช้เป็นวิธีแก้ปัญหาระยะยาว

let data: any = fetch('/api/data'); // no type checking
data.foo.bar.baz; // no error — and no protection

// Better: use 'unknown' and narrow it:
let raw: unknown = getExternalData();
if (typeof raw === 'string') {
  console.log(raw.toUpperCase()); // narrowed
}

ชนิด unknown — ทางเลือกที่ปลอดภัยแทน any

unknown เป็นชนิดข้อมูลที่ปลอดภัยกว่าสำหรับใช้แทน any คุณไม่สามารถใช้ค่าที่เป็น unknown ได้จนกว่าจะจำกัดชนิดข้อมูลของค่านั้นให้แคบลงก่อน วิธีนี้บังคับให้คุณตรวจสอบข้อมูลจากภายนอก

ทูเพิล — อาร์เรย์ความยาวตายตัว

ทูเพิลคืออาร์เรย์ความยาวตายตัวที่แต่ละตำแหน่งมีชนิดข้อมูลที่ทราบแน่ชัด

type Point = [number, number];
const origin: Point = [0, 0];
const p: Point = [3, 4];

// React useState returns a tuple:
const [count, setCount] = useState<number>(0);

ตรวจสอบอย่างรวดเร็ว

คุณลักษณะใดของ TypeScript ที่ทำให้ฟังก์ชันรับได้ทั้งสตริงและตัวเลข

ทบทวน: ชนิดพื้นฐาน ชนิดยูเนียน และนามแฝง

ชนิดข้อมูลพื้นฐาน ได้แก่ สตริง ตัวเลข บูลีน null และ undefined อาร์เรย์ใช้รูปแบบ Type[] ชนิดยูเนียนใช้รูปแบบ A | B ชนิดค่าตามตัวอักษรใช้กำหนดชุดค่าตายตัว นามแฝงชนิดข้อมูลใช้ตั้งชื่อชนิดข้อมูลเพื่อนำกลับมาใช้ซ้ำ พร็อพเพอร์ตีที่ไม่บังคับใช้เครื่องหมาย ? ส่วน readonly ใช้กับพร็อพเพอร์ตีที่แก้ไขไม่ได้ สำหรับข้อมูลจากภายนอก ควรเลือกใช้ unknown แทน any

เริ่มต้นได้ฟรี

เรียนรู้ HTML ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
41
บทเรียน
163

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

บทเรียน “ชนิดข้อมูลพื้นฐาน ยูเนียน และชื่อแทนชนิดข้อมูล” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “ชนิดข้อมูลพื้นฐาน ยูเนียน และชื่อแทนชนิดข้อมูล”

กำกับชนิดให้ตัวแปรด้วย string, number, boolean และอาร์เรย์ สร้างชนิดยูเนียนด้วย | และตั้งชื่อที่อ่านง่ายด้วยชื่อแทนชนิดข้อมูล คุณปฏิบัติ Frontend Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

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

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

บทเรียน “ชนิดข้อมูลพื้นฐาน ยูเนียน และชื่อแทนชนิดข้อมูล” ใช้เวลานานแค่ไหน

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

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

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

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

  1. เหตุผลที่ควรใช้ TypeScript: ตรวจจับบั๊กระหว่างคอมไพล์
  2. ชนิดข้อมูลพื้นฐาน ยูเนียน และชื่อแทนชนิดข้อมูล
  3. อินเทอร์เฟซและชนิดข้อมูลออบเจ็กต์
  4. การคอมไพล์ TS และ tsconfig.json
← กลับไปที่ Frontend Academy