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

การนำเข้าและส่งออกเฉพาะชนิด

ใช้ import type เพื่อหลีกเลี่ยงค่าใช้จ่ายขณะทำงาน

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

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

การนำเข้าและการส่งออกเฉพาะชนิดข้อมูล (import type / export type) เปิดตัวใน TypeScript 3.8 เพื่อให้นักพัฒนาควบคุมได้อย่างชัดเจนว่าสิ่งใดเป็นการพึ่งพาขณะรัน และสิ่งใดเป็นเพียงชนิดข้อมูล

เหตุใดการใช้เฉพาะชนิดข้อมูลจึงสำคัญ

การนำเข้าปกติอาจรวมโค้ดขณะรัน หากคุณต้องการเพียงชนิดข้อมูล การนำเข้านั้นสามารถถูกลบออกทั้งหมดจากเอาต์พุตที่คอมไพล์แล้ว
import { User } from './models'; // includes runtime binding
import type { User } from './models'; // compile-time only, erased

ไวยากรณ์สำหรับ import type

วาง `type` หลังคีย์เวิร์ด `import` คุณไม่สามารถใช้ชื่อที่นำเข้าเป็นค่าได้
import type { ApiResponse } from './api-types';

function handleResponse(res: ApiResponse<User>): void {
  // ApiResponse used as type annotation only
}

ไวยากรณ์สำหรับ export type

ใช้ `export type` เพื่อระบุอย่างชัดเจนว่าการส่งออกเป็นการส่งออกเฉพาะชนิดข้อมูล
// user.types.ts
export type UserId = string;
export type { User, UserRole };

การนำเข้าชนิดข้อมูลแบบแทรกในบรรทัด

TypeScript 4.5 ขึ้นไปรองรับการระบุการนำเข้าแต่ละรายการว่าเป็นชนิดข้อมูลเท่านั้นภายในคำสั่งนำเข้าปกติ
import { type User, createUser } from './user';
// User is type-only, createUser is a runtime value

การแก้ไขการพึ่งพาแบบวนรอบ

การนำเข้าเฉพาะชนิดข้อมูลสามารถแก้ปัญหาการพึ่งพาแบบวนรอบได้ เพราะไม่สร้างการเชื่อมโยงขณะรัน

verbatimModuleSyntax

TypeScript 5.0 เปิดตัว `verbatimModuleSyntax` เมื่อเปิดใช้ตัวเลือกนี้ คุณ MUST ใช้ `import type` สำหรับการนำเข้าเฉพาะชนิดข้อมูล เพื่อป้องกันความสับสนของตัวรวมชุด
// tsconfig.json
{ "compilerOptions": { "verbatimModuleSyntax": true } }

importsNotUsedAsValues

ตัวเลือกคอมไพเลอร์ `importsNotUsedAsValues` ซึ่งถูกแทนที่ด้วย verbatimModuleSyntax จะควบคุมวิธีที่ TypeScript จัดการกับการนำเข้าค่าที่ไม่ได้ใช้

ประโยชน์สำหรับตัวรวมชุด

ตัวรวมชุดอย่าง Vite และ esbuild ใช้เครื่องหมาย `import type` เพื่อข้ามการประมวลผลการนำเข้าชนิดข้อมูล ทำให้การสร้างชุดโปรแกรมเร็วขึ้น

การส่งออกซ้ำเฉพาะชนิดข้อมูล

ส่งออกชนิดข้อมูลซ้ำโดยไม่รวมโมดูลขณะรันของชนิดข้อมูลนั้น
// public-api.ts
export type { User, UserRole } from './internal-user';
export { createUser } from './internal-user'; // runtime

ข้อผิดพลาด: ไม่สามารถใช้ import type เป็นค่าได้

การใช้การนำเข้าเฉพาะชนิดข้อมูลเป็นค่าขณะรันจะทำให้เกิดข้อผิดพลาดขณะคอมไพล์
import type { User } from './user';
// const u = new User(); // Error — User was imported as type-only

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

เมื่อใดควรใช้ `import type` แทน `import` ปกติ

สรุปทบทวน

ใช้ `import type` และ `export type` สำหรับการนำเข้าและการส่งออกเฉพาะชนิดข้อมูล สิ่งเหล่านี้จะถูกลบออกขณะคอมไพล์ ป้องกันการพึ่งพาขณะรันที่มีต่อไฟล์ชนิดข้อมูล และจำเป็นต้องใช้เมื่อเปิด `verbatimModuleSyntax`

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

บทเรียน “การนำเข้าและส่งออกเฉพาะชนิด” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “การนำเข้าและส่งออกเฉพาะชนิด”

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

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

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

บทเรียน “การนำเข้าและส่งออกเฉพาะชนิด” ใช้เวลานานแค่ไหน

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

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

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

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

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