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

เนมสเปซกับโมดูล: การใช้งานสมัยใหม่

ทำความเข้าใจว่าเหตุใดจึงนิยมใช้โมดูลมากกว่าเนมสเปซ

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

ยินดีต้อนรับ

เดิม TypeScript มีเนมสเปซ (ก่อนหน้านี้เรียกว่า «โมดูลภายใน») สำหรับจัดระเบียบโค้ด ปัจจุบัน TypeScript ใช้โมดูล ES แทน บทเรียนนี้อธิบายว่าแต่ละแบบเหมาะกับสถานการณ์ใด

เนมสเปซคืออะไร

เนมสเปซเป็นวิธีเฉพาะของ TypeScript สำหรับจัดกลุ่มโค้ดที่เกี่ยวข้องกันไว้ภายใต้ขอบเขตที่มีชื่อ โดยใช้คีย์เวิร์ด `namespace`
namespace Geometry {
  export interface Point { x: number; y: number; }
  export function distance(a: Point, b: Point): number {
    return Math.sqrt((a.x - b.x) ** 2 + (a.y - b.y) ** 2);
  }
}

การเข้าถึงสมาชิกของเนมสเปซ

เข้าถึงสมาชิกของเนมสเปซผ่านชื่อเนมสเปซด้วยสัญกรณ์จุด
const p1: Geometry.Point = { x: 0, y: 0 };
const p2: Geometry.Point = { x: 3, y: 4 };
const d = Geometry.distance(p1, p2); // 5

เนมสเปซซ้อนกัน

เนมสเปซสามารถซ้อนกันได้
namespace App {
  export namespace Models {
    export interface User { name: string; }
  }
}
const u: App.Models.User = { name: 'Alice' };

การรวมเนมสเปซ

เนมสเปซรองรับการรวมการประกาศ — การประกาศเนมสเปซสองรายการที่มีชื่อเดียวกันจะถูกรวมเข้าด้วยกัน
namespace Validation {
  export function validate(s: string): boolean { return s.length > 0; }
}
namespace Validation {
  export function sanitize(s: string): string { return s.trim(); }
}

เหตุผลที่ควรเลือกใช้โมดูล

โมดูล ES เป็นมาตรฐานของ JavaScript ตัวรวมชุดโค้ดทั้งหมดรองรับโมดูลเหล่านี้ สามารถตัดโค้ดที่ไม่ได้ใช้ออกได้อย่างมีประสิทธิภาพ และทำงานได้โดยตรงในเบราว์เซอร์สมัยใหม่และ Node.js

สิ่งที่เทียบเท่ากับเนมสเปซในโมดูล

ใน TypeScript สมัยใหม่ เนมสเปซจะกลายเป็นเพียงไฟล์หนึ่งไฟล์ ส่งออกสิ่งที่ต้องการให้เป็นสาธารณะ และเก็บส่วนที่เหลือไว้เป็นส่วนตัว
// geometry.ts
export interface Point { x: number; y: number; }
export function distance(a: Point, b: Point): number {
  return Math.sqrt((a.x - b.x) ** 2 + (a.y - b.y) ** 2);
}

เนมสเปซยังใช้ในไฟล์ประกาศประเภท

เนมสเปซยังคงถูกใช้อย่างแพร่หลายในไฟล์ประกาศ .d.ts สำหรับไลบรารีส่วนกลาง เช่น ประเภท DOM และประเภท Node.js เนื่องจากเนมสเปซเหล่านี้ช่วยเพิ่มสิ่งต่าง ๆ ให้กับขอบเขตส่วนกลาง
// node.d.ts
declare namespace NodeJS {
  interface ProcessEnv { NODE_ENV?: 'development' | 'production'; }
}

การอ้างอิงแบบสามเครื่องหมายทับ (แบบเดิม)

ก่อนมีโมดูล ES คำสั่งแบบสามเครื่องหมายทับใช้สำหรับอ้างอิงไฟล์อื่น ปัจจุบัน `tsconfig` และการนำเข้าโมดูลเข้ามาแทนที่คำสั่งเหล่านี้
/// <reference types="node" />
/// <reference path="./other.d.ts" />

กรณีที่ยังควรใช้เนมสเปซ

ใช้เนมสเปซในกรณีต่อไปนี้: (1) ในไฟล์ประกาศประเภทสำหรับประเภทส่วนกลางแบบแฝง (2) เมื่อต้องเพิ่มส่วนขยายให้กับเนมสเปซส่วนกลางที่มีอยู่จากไลบรารี

การย้ายจากเนมสเปซไปยังโมดูล

แทนที่ `namespace Foo {}` ด้วยไฟล์โมดูล แทนที่ `/// ` ด้วยการนำเข้า ทีม TypeScript ได้จัดทำเอกสารอธิบายแนวทางการย้ายนี้ไว้แล้ว

ตรวจสอบความเข้าใจ

ใน TypeScript สมัยใหม่ สิ่งใดคือสิ่งที่แนะนำให้ใช้แทนเนมสเปซ

สรุป

เนมสเปซช่วยจัดระเบียบโค้ดภายใต้ขอบเขตที่มีชื่อ แต่ถือเป็นแนวทางแบบเดิมใน TypeScript สมัยใหม่ ให้ใช้โมดูล ES (`import`/`export`) สำหรับโค้ดแอปพลิเคชัน เนมสเปซยังมีประโยชน์ในไฟล์ประกาศประเภทสำหรับเพิ่มประเภทให้กับขอบเขตส่วนกลาง

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

บทเรียน “เนมสเปซกับโมดูล: การใช้งานสมัยใหม่” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “เนมสเปซกับโมดูล: การใช้งานสมัยใหม่”

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

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

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

บทเรียน “เนมสเปซกับโมดูล: การใช้งานสมัยใหม่” ใช้เวลานานแค่ไหน

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

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

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

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

  1. ไวยากรณ์โมดูล ES: import และ export
  2. การส่งออกซ้ำและไฟล์รวม
  3. การนำเข้าและส่งออกเฉพาะชนิด
  4. เนมสเปซกับโมดูล: การใช้งานสมัยใหม่
← กลับไปที่ TypeScript Academy