TypeScript Academy · บทเรียน

การทดสอบชนิดด้วย expectTypeOf และ tsd

ยืนยันความถูกต้องของชนิดควบคู่กับพฤติกรรมขณะทำงาน

บทเรียน 4 จาก 413 ขั้นตอน

การทดสอบชนิดด้วย expectTypeOf และ tsd เป็นบทเรียน TypeScript Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน TypeScript Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 4 บทเรียน

ยินดีต้อนรับ

การทดสอบชนิดข้อมูลเอง — ไม่ใช่แค่พฤติกรรมขณะทำงาน — ช่วยให้มั่นใจว่ายูทิลิตี TypeScript และชนิดข้อมูลแบบเจเนอริกทำงานได้อย่างถูกต้อง

เหตุผลที่ต้องทดสอบชนิดข้อมูล

ยูทิลิตีแบบเจเนอริกและชนิดข้อมูลแบบมีเงื่อนไขอาจมีข้อผิดพลาดที่ส่งผลต่ออาร์กิวเมนต์ชนิดข้อมูลบางแบบเท่านั้น การทดสอบชนิดข้อมูลจะตรวจพบข้อผิดพลาดเหล่านี้

expectTypeOf จาก Vitest

Vitest มี expectTypeOf สำหรับการยืนยันชนิดข้อมูลขณะคอมไพล์
import { expectTypeOf } from 'vitest';
expectTypeOf(42).toBeNumber();
expectTypeOf('hello').toBeString();

การยืนยันชนิดข้อมูลของค่าที่ส่งคืน

ยืนยันชนิดข้อมูลของค่าที่ฟังก์ชันส่งคืน
import { identity } from '../src/utils';
expectTypeOf(identity(42)).toEqualTypeOf<number>();
expectTypeOf(identity('hi')).toEqualTypeOf<string>();

ไลบรารี tsd

tsd เป็นเครื่องมือ CLI สำหรับการทดสอบชนิดข้อมูลในไฟล์ประกาศของ TypeScript
npm install --save-dev tsd

การยืนยันด้วย tsd

เขียนไฟล์ .test-d.ts พร้อมการยืนยันด้วย tsd
import { expectType, expectError } from 'tsd';
import { add } from '../src';
expectType<number>(add(1, 2));
expectError(add('a', 'b'));

ไลบรารี expect-type

ไลบรารี expect-type มีการยืนยันชนิดข้อมูลที่เข้ากันได้กับ Jest
import { expectTypeOf } from 'expect-type';
expectTypeOf<User>().toHaveProperty('name').toBeString();

การทดสอบชนิดข้อมูลแบบมีเงื่อนไข

ตรวจสอบว่าชนิดข้อมูลแบบมีเงื่อนไขให้ผลลัพธ์ที่ถูกต้องสำหรับข้อมูลเข้าหลากหลายรูปแบบ
type IsArray<T> = T extends any[] ? true : false;
expectTypeOf<IsArray<string[]>>().toEqualTypeOf<true>();
expectTypeOf<IsArray<string>>().toEqualTypeOf<false>();

การทดสอบชนิดข้อมูลแบบแมป

ตรวจสอบให้แน่ใจว่ายูทิลิตีชนิดข้อมูลแบบแมปสร้างโครงสร้างที่ถูกต้อง
type Mutable = { -readonly [K in keyof ReadonlyUser]: ReadonlyUser[K] };
expectTypeOf<Mutable['name']>().toBeString();
expectTypeOf<Mutable>().not.toMatchTypeOf<Readonly<Mutable>>();

การเรียกใช้ tsd ในการผสานรวมอย่างต่อเนื่อง

เพิ่ม tsd ลงในกระบวนการผสานรวมอย่างต่อเนื่องเพื่อให้ตรวจพบการถดถอยของชนิดข้อมูล
// package.json
{ "scripts": { "test:types": "tsd" } }

การทดสอบชนิดข้อมูลเทียบกับการทดสอบขณะทำงาน

การทดสอบชนิดข้อมูลทำงานขณะคอมไพล์โดยไม่มีค่าใช้จ่ายขณะทำงาน การทดสอบขณะทำงานตรวจสอบพฤติกรรม ทั้งสองอย่างจำเป็น

ตรวจสอบอย่างรวดเร็ว

`expectTypeOf(add(1, 2)).toEqualTypeOf()` ตรวจสอบอะไร

สรุป

การทดสอบชนิดข้อมูลด้วย expectTypeOf และ tsd: คุณได้เข้าใจแนวคิดและรูปแบบสำคัญแล้ว
เริ่มต้นได้ฟรี

เรียนรู้ TypeScript ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
101
บทเรียน
352

คำถามที่พบบ่อย

บทเรียน “การทดสอบชนิดด้วย expectTypeOf และ tsd” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การทดสอบชนิดด้วย expectTypeOf และ tsd” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส TypeScript Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การทดสอบชนิดด้วย expectTypeOf และ tsd”

ยืนยันความถูกต้องของชนิดควบคู่กับพฤติกรรมขณะทำงาน คุณปฏิบัติ TypeScript Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน TypeScript Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน TypeScript Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การทดสอบชนิดด้วย expectTypeOf และ tsd” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน TypeScript Academy นี้ได้ไหม

ได้ บทเรียน TypeScript Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. การตั้งค่า Jest สำหรับ TypeScript ด้วย ts-jest
  2. การเขียนการทดสอบหน่วยที่ปลอดภัยด้านชนิด
  3. การจำลองโมดูลและฟังก์ชันใน TypeScript
  4. การทดสอบชนิดด้วย expectTypeOf และ tsd
← กลับไปที่ TypeScript Academy