การเผยแพร่แพ็กเกจพร้อมชนิดข้อมูล
เผยแพร่ไลบรารีพร้อมการกำหนดชนิดข้อมูลอย่างครบถ้วน สร้าง .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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พื้นฐาน .d.ts; export type เทียบกับ export
- การเผยแพร่แพ็กเกจพร้อมชนิดข้อมูล