ข้ามไปยังเนื้อหาหลัก

TypeScript / Type Check (ตรวจสอบ Type ของโค้ด)

รันคำสั่งตรวจ type เช่น tsc --noEmit, mypy, pyright หรือ flow โดยไม่รันชุดทดสอบ

การอ้างอิง (Reference): loha/type-check@v1

หมวดหมู่: Test & Lint (การทดสอบและตรวจโค้ด)

รันไทม์ (Runtime): docker.io/library/node:20-alpine (รันแบบ non-root, ตรึงเวอร์ชันด้วย digest ที่ Node 20)

สัญญาอนุญาต (License): Apache-2.0

ควรใช้เมื่อ​

ใช้ร่วมกับ run-lint และ run-tests เพื่อแยกขั้นตอนการตรวจสอบ static type ออกจากการทดสอบ runtime ซึ่งจะช่วยให้เห็นสาเหตุของข้อผิดพลาดได้อย่างเจาะจงและรวดเร็ว

พารามิเตอร์​

พารามิเตอร์ชนิดค่าเริ่มต้นจำเป็นคำอธิบาย
CHECK_COMMANDstringnpx tsc --noEmitไม่คำสั่งตรวจสอบ type ที่ต้องการรัน เช่น npx tsc --noEmit หรือ mypy .
WORKING_DIRECTORYstring.ไม่ไดเรกทอรีทำงานของ task โดยคิดเทียบจาก root ของ workspace
CHECK_IMAGEstringdocker.io/library/node@sha256:fb4cd12c85ee03686f6af5362a0b0d56d50c58a04632e6c0fb8363f609372293ไม่คอนเทนเนอร์อิมเมจที่ติดตั้งตัวตรวจ type พร้อมใช้งาน
FAIL_ON_ERRORenum: true, falsetrueไม่กำหนดให้ task ล้มเหลวเมื่อคำสั่งพบข้อผิดพลาด; หากตั้งเป็น false จะเป็นโหมดรายงานผลอย่างเดียว

พื้นที่ทำงาน (Workspaces)​

  • source (จำเป็น): เชื่อมโยงจาก pipeline workspace source

ผลลัพธ์ (Results)​

ผลลัพธ์ (Result)คำอธิบาย
CHECK_RESULTผลลัพธ์การตรวจ type: PASS (ผ่าน) หรือ FAIL (พบข้อผิดพลาด)
ERROR_COUNTจำนวนข้อผิดพลาด (errors) ทั้งหมดที่ตรวจพบ

การทำงาน​

สั่งรัน CHECK_COMMAND ภายในคอนเทนเนอร์ CHECK_IMAGE ที่ไดเรกทอรี WORKING_DIRECTORY (ค่าเริ่มต้นคือ npx tsc --noEmit สำหรับ TypeScript) โดยผลลัพธ์ CHECK_RESULT จะได้รับค่า PASS หรือ FAIL ตาม exit code พร้อมทั้งตรวจนับจำนวนข้อผิดพลาดจากเอาต์พุตของโปรแกรม

ตัวอย่าง​

ตรวจสอบแอปพลิเคชัน TypeScript ใน Monorepo​

steps:
- name: type-check
uses: loha/type-check@v1
with:
CHECK_COMMAND: 'pnpm type-check'
WORKING_DIRECTORY: 'apps/dashboard'

ตรวจสอบโค้ดภาษา Python ด้วย mypy​

steps:
- name: type-check
uses: loha/type-check@v1
with:
CHECK_COMMAND: 'mypy src/ --ignore-missing-imports'
CHECK_IMAGE: 'python:3.12-slim'

การแก้ปัญหา​

ปัญหา: พบข้อผิดพลาด tsc: command not found

วิธีแก้: เพิ่ม typescript เป็น dev dependency ในโปรเจกต์เพื่อให้คำสั่ง install ใน workspace ทำการติดตั้ง หรือเลือกใช้ CHECK_IMAGE ที่มี TypeScript ติดตั้งมาพร้อมแล้ว


ปัญหา: พบข้อผิดพลาด type error จากภายนอกในโฟลเดอร์ node_modules จำนวนมาก

วิธีแก้: เพิ่ม "exclude": ["node_modules"] ในไฟล์ tsconfig.json หรือส่งพารามิเตอร์ --skipLibCheck ให้กับคำสั่ง tsc