การตรวจสอบชนิดใน CI: กลยุทธ์และเครื่องมือ
เรียกใช้การตรวจสอบชนิดอย่างมีประสิทธิภาพในไปป์ไลน์การผสานรวมอย่างต่อเนื่อง
การตรวจสอบชนิดใน CI: กลยุทธ์และเครื่องมือ เป็นบทเรียน TypeScript Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน TypeScript Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใดจึงตรวจสอบชนิดข้อมูลในซีไอ
การเรียกใช้การตรวจสอบชนิดข้อมูลของ TypeScript ในระบบผสานรวมอย่างต่อเนื่องช่วยตรวจจับข้อผิดพลาดที่นักพัฒนาอาจพลาดในเครื่อง โดยเฉพาะในทีมขนาดใหญ่ที่การเปลี่ยนแปลงในแพ็กเกจหนึ่งอาจทำให้แพ็กเกจอื่นเสียหาย
# Simple CI type check step
npx tsc --noEmitแฟล็ก --noEmit
tsc --noEmit เรียกใช้ตัวตรวจสอบชนิดข้อมูลแบบเต็ม แต่ข้ามการสร้างเอาต์พุต JavaScript จึงเหมาะสำหรับการตรวจสอบชนิดข้อมูลในระบบผสานรวมอย่างต่อเนื่องโดยไม่สร้างไฟล์
# GitHub Actions step
- name: Type Check
run: npx tsc --noEmitการตรวจสอบชนิดข้อมูลแบบเพิ่มทีละส่วนในซีไอ
ใช้ --incremental ร่วมกับแคชของระบบผสานรวมอย่างต่อเนื่องเพื่อกู้คืนไฟล์ .tsbuildinfo ทำให้ตรวจสอบใหม่เฉพาะไฟล์ที่เปลี่ยนแปลง
# Cache .tsbuildinfo in CI (GitHub Actions)
- uses: actions/cache@v3
with:
path: .tsbuildinfo
key: tsc-${{ hashFiles('src/**/*.ts') }}การอ้างอิงโปรเจกต์ในซีไอ
ในโมโนรีโพ tsc --build --noEmit จะตรวจสอบชนิดข้อมูลของทุกแพ็กเกจโดยคำนึงถึงการพึ่งพาระหว่างการอ้างอิงโปรเจกต์
# Type-check all project references
npx tsc --build --noEmitการตรวจสอบเฉพาะชนิดข้อมูลที่ได้รับผลกระทบด้วย Nx
Nx สามารถตรวจจับได้ว่าแพ็กเกจใดได้รับผลกระทบจาก PR และตรวจสอบชนิดข้อมูลเฉพาะแพ็กเกจเหล่านั้น โดยข้ามแพ็กเกจที่ไม่มีการเปลี่ยนแปลง
# Only type-check affected projects
npx nx affected --target=typecheck --base=origin/mainการตรวจสอบชนิดข้อมูลด้วย Turborepo
เพิ่มสคริปต์ typecheck ให้แต่ละแพ็กเกจ แล้วเรียกใช้ผ่าน Turborepo พร้อมการแคชและการทำงานแบบขนาน
// package.json
{ "scripts": { "typecheck": "tsc --noEmit" } }
// turbo.json pipeline
{ "typecheck": { "dependsOn": ["^typecheck"], "outputs": [] } }
// Run:
npx turbo typecheckการทำงานตรวจสอบชนิดข้อมูลแบบขนาน
สำหรับแพ็กเกจที่เป็นอิสระต่อกัน ให้เรียกใช้การตรวจสอบชนิดข้อมูลแบบขนานด้วยเครื่องมืออย่าง concurrently หรือ npm-run-all
npx concurrently \
"tsc -p packages/core/tsconfig.json --noEmit" \
"tsc -p packages/ui/tsconfig.json --noEmit"ทำให้ซีไอล้มเหลวเมื่อพบข้อผิดพลาดของชนิดข้อมูล
ตรวจสอบให้แน่ใจว่าซีไอล้มเหลวเมื่อเกิดข้อผิดพลาดของ TypeScript โดยตรวจสอบรหัสการออกจากการทำงาน tsc --noEmit จะออกด้วยรหัส 1 เมื่อมีข้อผิดพลาด
# CI step — fails if tsc exits 1
- name: Type Check
run: npx tsc --noEmit
# No continue-on-error: true hereตรวจสอบชนิดข้อมูลเฉพาะคำขอรวมโค้ด
ใช้ GitHub Actions เพื่อเรียกใช้การตรวจสอบชนิดข้อมูลเฉพาะไฟล์ที่เปลี่ยนแปลงใน PR เพื่อลดเวลาของระบบผสานรวมอย่างต่อเนื่องสำหรับคลังโค้ดขนาดใหญ่
# Use ts-affected or custom script to detect changed TS files
# Then run tsc only for affected tsconfig projectsรายงานข้อผิดพลาดของชนิดข้อมูลเป็นความคิดเห็นใน PR
เครื่องมืออย่าง danger-js สามารถแยกวิเคราะห์เอาต์พุตของ tsc และโพสต์ข้อผิดพลาดของชนิดข้อมูลเป็นความคิดเห็นแบบแทรกในรีวิว PR เพื่อให้มองเห็นได้ชัดเจนยิ่งขึ้น
// dangerfile.ts
import { danger, fail } from "danger";
// Parse tsc --noEmit output and report errors inlineทบทวน: การตรวจสอบชนิดข้อมูลในซีไอ
เรียกใช้ tsc --noEmit ในระบบผสานรวมอย่างต่อเนื่องเพื่อความถูกต้อง ใช้ --incremental ร่วมกับแคชเพื่อเพิ่มความเร็ว ในโมโนรีโพ ให้ใช้ tsc --build, Turborepo หรือการวิเคราะห์แพ็กเกจที่ได้รับผลกระทบด้วย Nx เพื่อลดงานต่อ PR
ตรวจสอบอย่างรวดเร็ว
แฟล็กใดของ tsc ที่ตรวจสอบชนิดข้อมูลโดยไม่สร้างไฟล์เอาต์พุตใด ๆ
สิ่งที่คุณได้เรียนรู้
การตรวจสอบชนิดข้อมูลในระบบผสานรวมอย่างต่อเนื่องใช้ tsc --noEmit เพื่อตรวจสอบความถูกต้องโดยไม่สร้างไฟล์เอาต์พุต ใช้ร่วมกับ --incremental การอ้างอิงโปรเจกต์ และเครื่องมือแคชอย่าง Turborepo และ Nx เพื่อให้การตรวจสอบชนิดข้อมูลในโมโนรีโพขนาดใหญ่รวดเร็วและขยายได้
คำถามที่พบบ่อย
บทเรียน “การตรวจสอบชนิดใน CI: กลยุทธ์และเครื่องมือ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การตรวจสอบชนิดใน CI: กลยุทธ์และเครื่องมือ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส TypeScript Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การตรวจสอบชนิดใน CI: กลยุทธ์และเครื่องมือ”
เรียกใช้การตรวจสอบชนิดอย่างมีประสิทธิภาพในไปป์ไลน์การผสานรวมอย่างต่อเนื่อง คุณปฏิบัติ TypeScript Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน TypeScript Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน TypeScript Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การตรวจสอบชนิดใน CI: กลยุทธ์และเครื่องมือ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน TypeScript Academy นี้ได้ไหม
ได้ บทเรียน TypeScript Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การวิเคราะห์การคอมไพล์ TypeScript ที่ช้า
- หลีกเลี่ยงการดำเนินการกับชนิดที่มีค่าใช้จ่ายสูง
- skipLibCheck และคำประกาศแบบแยกส่วน
- การตรวจสอบชนิดใน CI: กลยุทธ์และเครื่องมือ