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

การตรวจสอบชนิดใน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. การวิเคราะห์การคอมไพล์ TypeScript ที่ช้า
  2. หลีกเลี่ยงการดำเนินการกับชนิดที่มีค่าใช้จ่ายสูง
  3. skipLibCheck และคำประกาศแบบแยกส่วน
  4. การตรวจสอบชนิดใน CI: กลยุทธ์และเครื่องมือ
← กลับไปที่ TypeScript Academy