onlinetools.dev

JSON → ชนิดข้อมูล TypeScript

อนุมานอินเทอร์เฟซ TypeScript จากตัวอย่าง JSON ได้ทันที

ทำงานในเครื่อง
loading…
เกี่ยวกับเครื่องมือนี้

วางตัวอย่าง JSON — คำตอบจาก API หรือไฟล์คอนฟิก — แล้วได้อินเทอร์เฟซ TypeScript ที่อนุมานจากมัน: อ็อบเจกต์ซ้อนกลายเป็นชนิดข้อมูลซ้อน อาร์เรย์ได้ชนิดของสมาชิก (พร้อมยูเนียนเมื่อเนื้อหาปนกัน) และคีย์ที่ไม่ใช่ชื่อตัวแปรที่ถูกต้องจะถูกใส่อัญประกาศให้อย่างเหมาะสม

ชนิดข้อมูลที่สร้างขึ้นเป็นจุดตั้งต้น ไม่ใช่สัญญา: การอนุมานเห็นเพียงตัวอย่างเดียว ฟิลด์ที่บังเอิญเป็น null ในตัวอย่างของคุณจึงได้ชนิดเป็น null และฟิลด์ที่เป็นตัวเลือกซึ่งไม่ปรากฏก็เป็นสิ่งที่มันไม่รู้จักเลย ผลลัพธ์จงใจให้เรียบง่าย — ไม่มีเดคอเรเตอร์ ไม่มีการตรวจสอบตอนรัน — คุณจึงวางที่ไหนก็ได้แล้วค่อยขัดเกลา

สำหรับฟิลด์ที่ต่างกันไปในแต่ละคำขอ ให้ลองส่งตัวอย่างที่สองเข้าไปแล้วรวมด้วยมือ หรือขยับไปใช้เครื่องมือที่ยึดสคีมาเป็นหลัก (OpenAPI, zod) เมื่อรูปร่างข้อมูลนิ่งแล้ว ส่วนช่วงเวลา “ขอแค่ชนิดข้อมูลของคำตอบนี้” ในแต่ละวัน การวางครั้งเดียวก็เพียงพอ

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

ทำไมฟิลด์ที่เป็น null ได้ของฉันได้ชนิดเป็น null เฉย ๆ?
การอนุมานเห็นเพียงตัวอย่างที่คุณวางเข้าไป หากฟิลด์นั้นเป็น null ที่นั่น null ก็คือทั้งหมดที่มันรู้ได้ ให้เปลี่ยนเป็น string | null (หรือชนิดจริงอะไรก็ตาม) หลังการสร้าง — หรือวางตัวอย่างที่ฟิลด์นั้นมีค่าอยู่
ฟิลด์ที่เป็นตัวเลือกถูกจัดการอย่างไร?
มันตรวจจับไม่ได้ — ตัวอย่างเดียวแยกไม่ออกระหว่าง “มีเสมอ” กับ “ครั้งนี้บังเอิญมี” ฟิลด์ที่ไม่ปรากฏในตัวอย่างก็จะไม่ปรากฏในชนิดข้อมูล ให้กำกับฟิลด์เป็นตัวเลือกเอง (name?:) ในจุดที่คุณรู้ว่า API ละไว้
อาร์เรย์ที่มีชนิดข้อมูลปนกันให้ผลอย่างไร?
ได้ยูเนียน: [1, "a"] อนุมานเป็น (number | string)[] ส่วนอาร์เรย์ว่างอนุมานเป็น unknown[] เพราะไม่มีสมาชิกให้ตรวจดู ให้แทนด้วยชนิดของสมาชิกจริงเมื่อคุณรู้แล้ว
ควรใช้ชนิดข้อมูลที่อนุมานได้ หรือไลบรารีสคีมาอย่าง zod?
อินเทอร์เฟซที่อนุมานได้มีอยู่เฉพาะตอนคอมไพล์ — มันไม่ตรวจสอบอะไรเลยตอนรัน สำหรับเครื่องมือภายในและการใส่ชนิดข้อมูลอย่างรวดเร็วมันเหมาะมาก แต่สำหรับข้อมูลเข้าที่ไม่น่าไว้ใจในขณะรัน ให้นิยามสคีมาแบบ zod/valibot แล้วอนุมานชนิดข้อมูลแบบสถิตจากมันแทน
เครื่องมือที่เกี่ยวข้อง