การเผยแพร่ไลบรารีอรรถประโยชน์ด้านชนิด
จัดแพ็กเกจและแชร์ชนิดอรรถประโยชน์แบบกำหนดเองบน npm
การเผยแพร่ไลบรารีอรรถประโยชน์ด้านชนิด เป็นบทเรียน TypeScript Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน TypeScript Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 4 บทเรียน
ไลบรารีชนิดยูทิลิตีคืออะไร
ไลบรารีชนิดยูทิลิตีจะส่งออกเฉพาะชนิดของ TypeScript เท่านั้น ไม่มีโค้ดขณะทำงาน ตัวอย่างที่ได้รับความนิยม ได้แก่ type-fest, ts-essentials และ utility-types
// A type utility library exports types like:
export type DeepPartial<T> = T extends object
? { [K in keyof T]?: DeepPartial<T[K]> }
: T;โครงสร้างโครงการ
ทำให้เรียบง่ายด้วย src/index.ts เพียงไฟล์เดียวที่ส่งออกยูทิลิตีทั้งหมดซ้ำ และตั้งค่า tsconfig.json ให้ส่งออกเฉพาะคำประกาศ
// tsconfig.json
{
"compilerOptions": {
"declaration": true,
"emitDeclarationOnly": true,
"outDir": "dist",
"strict": true
}
}package.json สำหรับแพ็กเกจที่มีเฉพาะชนิด
ตั้งค่าฟิลด์ main และ types ให้ชี้ไปยังคำประกาศ และตั้งค่า sideEffects: false เพื่อให้ตัดโค้ดที่ไม่ได้ใช้ออกได้
{
"name": "@myorg/type-utils",
"version": "1.0.0",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"sideEffects": false,
"files": ["dist"]
}การสร้างคำประกาศ
เรียกใช้ tsc เพื่อส่งออกไฟล์ .d.ts สำหรับไลบรารีที่มีเฉพาะชนิด ผลลัพธ์ JS จะว่างเปล่าหรือมีเพียงเล็กน้อย
# Build declarations
npx tsc
# dist/index.d.ts is generatedการจัดการเวอร์ชันและบันทึกการเปลี่ยนแปลง
ปฏิบัติตามการกำหนดเวอร์ชันเชิงความหมาย: การเปลี่ยนแปลงชนิดข้อมูลที่ทำให้เข้ากันไม่ได้ให้เพิ่มเวอร์ชันหลัก ยูทิลิตีใหม่ให้เพิ่มเวอร์ชันย่อย และการแก้ไขให้เพิ่มเวอร์ชันแก้ไข
# Bump version
npm version minor
# Generate changelog with conventional-changelog or changesetsการเผยแพร่ไปยัง npm
ใช้ npm publish หรือ pnpm publish หากเป็นแพ็กเกจที่มีขอบเขตภายใต้องค์กร โปรดตรวจสอบว่าคุณเข้าสู่ระบบแล้วและตั้งค่าขอบเขตเรียบร้อยแล้ว
npm login
npm publish --access public
# or for private: npm publish --access restrictedความเข้ากันได้ของเวอร์ชัน TypeScript
ระบุเวอร์ชันขั้นต่ำของ TypeScript ที่ยูทิลิตีของคุณต้องใช้ ชนิดข้อมูลเงื่อนไขแบบเวียนเกิดต้องใช้ TS 4.1 ขึ้นไป ส่วน Awaited มีมาให้ในตัวตั้งแต่ TS 4.5 ขึ้นไป
// package.json peerDependencies
{
"peerDependencies": {
"typescript": ">=4.5"
}
}การทดสอบชนิดข้อมูลด้วย tsd
ใช้แพ็กเกจ tsd เพื่อเขียนการทดสอบระดับชนิดข้อมูล ซึ่งจะทำงานระหว่างการผสานรวมอย่างต่อเนื่อง เพื่อให้แน่ใจว่ายูทิลิตีของคุณทำงานได้อย่างถูกต้อง
import { expectType } from "tsd";
import type { DeepPartial } from "@myorg/type-utils";
expectType<DeepPartial<{ a: { b: number } }>>({ a: {} });เอกสารประกอบด้วย TSDoc
เพิ่มความคิดเห็น JSDoc รูปแบบ /** */ ให้กับชนิดข้อมูลของคุณ เครื่องมืออย่าง TypeDoc จะสร้างเอกสารประกอบส่วนเชื่อมต่อโปรแกรมประยุกต์จากความคิดเห็นเหล่านี้
/**
* Makes all properties of T optional at every depth.
* @example type A = DeepPartial<{ x: { y: number } }> // { x?: { y?: number } }
*/
export type DeepPartial<T> = ...การเผยแพร่ในโมโนรีโป
ในโมโนรีโป ให้เผยแพร่แพ็กเกจชนิดข้อมูลเป็นแพ็กเกจเวิร์กสเปซ เพื่อให้แอปอื่นใช้งานผ่าน workspace:* แทน npm
// Other package's package.json
{
"dependencies": {
"@myorg/type-utils": "workspace:*"
}
}ทบทวน: การเผยแพร่ไลบรารีชนิดข้อมูล
ไลบรารียูทิลิตีชนิดข้อมูลควรมี emitDeclarationOnly: true ส่งออกชนิดข้อมูลจาก src/index.ts จัดการเวอร์ชันด้วยการกำหนดเวอร์ชันเชิงความหมาย ทดสอบด้วย tsd จัดทำเอกสารด้วย TSDoc และเผยแพร่ไปยัง npm หรือรีจิสทรีของเวิร์กสเปซ
ตรวจสอบอย่างรวดเร็ว
ตัวเลือก tsconfig ใดสร้างเฉพาะไฟล์ .d.ts โดยไม่มีผลลัพธ์ JavaScript
สิ่งที่ได้เรียนรู้
การเผยแพร่ไลบรารียูทิลิตีชนิดข้อมูลต้องใช้ emitDeclarationOnly ช่องต่าง ๆ ใน package.json อย่างเหมาะสม การทดสอบระดับชนิดข้อมูลด้วย tsd ความคิดเห็น TSDoc และการกำหนดเวอร์ชันเชิงความหมาย คุณสามารถแบ่งปันยูทิลิตีของคุณกับชุมชนหรือใช้ร่วมกันภายในโมโนรีโปได้
เรียนรู้ TypeScript ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 101
- บทเรียน
- 352
คำถามที่พบบ่อย
บทเรียน “การเผยแพร่ไลบรารีอรรถประโยชน์ด้านชนิด” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การเผยแพร่ไลบรารีอรรถประโยชน์ด้านชนิด” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส TypeScript Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การเผยแพร่ไลบรารีอรรถประโยชน์ด้านชนิด”
จัดแพ็กเกจและแชร์ชนิดอรรถประโยชน์แบบกำหนดเองบน npm คุณปฏิบัติ TypeScript Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน TypeScript Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน TypeScript Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การเผยแพร่ไลบรารีอรรถประโยชน์ด้านชนิด” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน TypeScript Academy นี้ได้ไหม
ได้ บทเรียน TypeScript Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- DeepPartial และ DeepReadonly
- ยูทิลิตี Flatten และ UnwrapPromise
- TupleToUnion และ UnionToIntersection
- การเผยแพร่ไลบรารีอรรถประโยชน์ด้านชนิด