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

การเผยแพร่แพ็กเกจพร้อมชนิดข้อมูล

เผยแพร่ไลบรารีพร้อมการกำหนดชนิดข้อมูลอย่างครบถ้วน สร้าง .d.ts ด้วย tsc ชี้ package.json ไปยังไฟล์เหล่านั้น จัดการการส่งออก ESM/CJS และทดสอบก่อนเผยแพร่

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

บทนำ

เป้าหมาย: เผยแพร่แพ็กเกจที่มีการกำหนดชนิดอย่างแข็งแกร่ง คุณจะสร้างไฟล์ .d.ts เชื่อมต่อ package.json ให้ถูกต้อง รองรับ ESM/CJS ผ่าน exports และตรวจสอบด้วย tsc --noEmit ในแอปตัวอย่าง

  • สร้างไฟล์ประกาศ
  • ชี้ types (หรือ exports รายจุดเข้า)
  • ทดสอบก่อนเผยแพร่

สร้างไฟล์ประกาศ

เปิดใช้ declaration เพื่อสร้าง.d.ts ใช้การกำหนดค่าการสร้างแยกเฉพาะ เพื่อให้ tsconfig ของแอปยังคงเข้มงวดและสะอาด

// tsconfig.build.json
{
  "compilerOptions": {
    "target": "ES2020",
    "module": "ESNext",
    "declaration": true,
    "emitDeclarationOnly": false,
    "outDir": "dist",
    "rootDir": "src",
    "stripInternal": true
  },
  "include": ["src/**/*"]
}

ชนิด/การส่งออกใน package.json

ชี้ types ไปยังไฟล์ประกาศที่ราก สำหรับการส่งออกเส้นทางย่อย ให้รวมรายการ types เพื่อให้เครื่องมือแก้ไขโค้ดค้นหา .d.ts รายโมดูลได้

// package.json
{
  "name": "@acme/widgets",
  "version": "1.0.0",
  "type": "module",
  "main": "./dist/index.cjs",
  "module": "./dist/index.js",
  "types": "./dist/index.d.ts",
  "exports": {
    ".": {
      "types": "./dist/index.d.ts",
      "import": "./dist/index.js",
      "require": "./dist/index.cjs"
    },
    "./utils": {
      "types": "./dist/utils.d.ts",
      "import": "./dist/utils.js",
      "require": "./dist/utils.cjs"
    }
  }
}

ต้นฉบับเทียบกับ .d.ts

ตรวจสอบให้แน่ใจว่า API สาธารณะของคุณมีการกำหนดชนิดอย่างดี ไฟล์ประกาศจะจำลองลายเซ็นจากต้นฉบับ เพื่อให้ผู้ใช้ได้รับการเติมโค้ดอัตโนมัติและการตรวจสอบ

// src/index.ts
export interface Widget { id: string; name: string }
export function greet(w: Widget): string { return `Hello, ${w.name}` }

// dist/index.d.ts (emitted)
export interface Widget { id: string; name: string }
export declare function greet(w: Widget): string

ทดสอบในโครงการผู้ใช้งาน

ก่อนเผยแพร่ ให้ทดสอบในโครงการผู้ใช้งานขนาดเล็กด้วย tsc --noEmit ควรได้รับข้อผิดพลาดที่ถูกต้องเมื่อใช้งานไม่ถูกต้อง

// consumer/tsconfig.json
{
  "compilerOptions": { "strict": true, "target": "ES2020", "module": "ESNext" },
  "include": ["./src"]
}

// consumer/src/app.ts
import { greet } from "@acme/widgets"

// Type checks in the consumer
console.log(greet({ id: "w1", name: "Ada" }))
// @ts-expect-error: missing name
// console.log(greet({ id: "w1" }))

เคล็ดลับและข้อควรระวัง

เคล็ดลับ:

  • เลือกใช้ exports ของเส้นทางย่อยพร้อม types รายจุดเข้า
  • เก็บชนิดภายในไว้โดยไม่ส่งออก หรือใช้ @internal
  • ใช้สคริปต์ prepare เพื่อสร้างแพ็กเกจก่อน npm publish

การตรวจสอบการเผยแพร่ชนิด

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

สรุปทบทวน

สรุปทบทวน: สร้างไฟล์ประกาศด้วย tsc เชื่อมต่อ package.json (types/exports) และตรวจสอบในแอปผู้ใช้งานก่อนเผยแพร่

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

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

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

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

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

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

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

บทเรียน “การเผยแพร่แพ็กเกจพร้อมชนิดข้อมูล” ใช้เวลานานแค่ไหน

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

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

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

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

  1. พื้นฐาน .d.ts; export type เทียบกับ export
  2. การเผยแพร่แพ็กเกจพร้อมชนิดข้อมูล
← กลับไปที่ TypeScript Academy