# การรองรับ TypeScript ใน Maguyva: บริบทที่ดีขึ้นสำหรับ Monorepo

Canonical source: https://maguyva.ai/th/languages/typescript

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

Maguyva รองรับ TypeScript ด้วยการแยกวิเคราะห์ AST และการดึงสัญลักษณ์ ช่วยให้เอเจนต์ AI ตามรอย interface, การอิมพลีเมนต์, package ที่ใช้ร่วมกัน และโค้ดแอปที่หนัก JSX ข้ามโมโนรีโพ

## ภาพรวมการรองรับ

- ระดับ: รองรับ AST และสัญลักษณ์
- การเขียนโปรแกรม
- นามสกุลไฟล์: .cts, .d.ts, .mts, .spec.ts, .stories.ts, .test.ts, +อีก 1
- การแยกวิเคราะห์ AST จริงสำหรับการค้นหาที่รู้จักไวยากรณ์และบริบทเชิงโครงสร้าง
- สัญลักษณ์ที่มีชื่อป้อนข้อมูลให้การค้นหาเชิงความหมายและการอ้างอิงไขว้ การนำทางกราฟจะใช้งานได้เมื่อเปิดใช้การสกัดความสัมพันธ์
- ภาษานี้ส่งสัญลักษณ์และความสัมพันธ์ไปยังการค้นหาแบบรู้บริบทกราฟ โดยประเภทเอดจ์ที่รองรับจะแตกต่างกันตามโครงสร้างเฉพาะของภาษา
- รองรับทั้งการแยกวิเคราะห์ AST และการสกัดสัญลักษณ์

## เหมาะที่สุดสำหรับ

- ทีมผลิตภัณฑ์และแพลตฟอร์มที่รัน Next.js, Node service, package ที่ใช้ร่วมกัน และเครื่องมือในรีโพ TypeScript เดียว
- รีโพที่ interface, DTO, schema และคอมโพเนนต์ของ React เคลื่อนไปด้วยกัน แต่อยู่ในไดเรกทอรีต่างกัน
- ทีมที่พยายามให้เอเจนต์ AI มีบริบทที่ปลอดภัย ก่อนที่มันจะแตะ type ที่ใช้ร่วมกันหรือขอบเขต package

## เวิร์กโฟลว์ของเอเจนต์

- ตามรอย type, interface หรือคอมโพเนนต์จากคำนิยามไปยังเส้นทางโค้ดที่ใช้มันจริง
- เปรียบเทียบการอิมพลีเมนต์ข้าม package ก่อนเปลี่ยนตัวช่วยที่ใช้ร่วมกันหรือ API contract
- แมปรัศมีผลกระทบที่น่าจะเกิดขึ้นจากการแก้ไข type ที่ใช้ร่วมกัน, ยูทิลิตี้ หรือ service module

## เหตุใดหน้า TypeScript จึงสำคัญ

TypeScript คือภาษาที่หลายทีมคาดหวังว่าการรีแฟกเตอร์ด้วยความช่วยเหลือของ AI จะรู้สึกปลอดภัยในที่สุด ระบบ type ช่วยได้ แต่มันไม่ได้ขจัดปัญหาจริง: package ที่ใช้ร่วมกัน, DTO, client ที่สร้างขึ้นโดยอัตโนมัติ, คอมโพเนนต์ของ React, test และโค้ดแอปทั้งหมดล้วนอ้างอิงชื่อเดียวกันข้ามรีโพขนาดใหญ่

สำหรับ TypeScript มาตรฐานสูงกว่าคำว่า "มันเข้าใจไวยากรณ์" เอเจนต์ต้องตามรอย contract จากคำนิยามไปยังการอิมพลีเมนต์ ไปยังรัศมีผลกระทบ ก่อนที่มันจะแก้ไข type ที่ใช้ร่วมกัน, hook หรือ client

## สิ่งที่ Maguyva ดึงออกมาจริงใน TypeScript

Maguyva ดึงคลาส, เมธอด, interface และ type alias ข้าม `.ts`, `.mts`, `.cts` และรูปแบบไฟล์ TypeScript ทั่วไปรอบๆ test และ story คำนำหน้าสมาชิกถูกทำให้เป็นมาตรฐานเดียวกัน แต่ตัวระบุที่มีคลาสกำกับยังคงถูกเก็บไว้ ซึ่งช่วยเมื่อรีโพมีทั้งชื่อตัวช่วยเปล่าๆ และเมธอดที่ผูกกับคลาสซึ่งมีส่วนท้ายเหมือนกัน

JSX ถูกถือว่าเป็นสัญญาณเชิงโครงสร้างจริง ไม่ใช่มาร์กอัปที่หลงเหลือ ในไฟล์ TypeScript ที่ทำดัชนีแล้ว การทดสอบ, stories และการกำหนดค่ายังคงเข้าถึงได้ควบคู่กับโค้ดแอปพลิเคชัน ช่วยให้เอเจนต์ตรวจสอบตัวอย่างการใช้งานและการตั้งค่าก่อนแก้ไขคอมโพเนนต์หรือบริการที่ใช้ร่วมกัน

## เวิร์กโฟลว์ MCP ที่มีประโยชน์สำหรับรีโพของ TypeScript

รูปแบบเริ่มต้นสามแบบมักเพียงพอ:

- ใช้ `find_symbol` เมื่อคุณรู้ชื่อ interface, type alias, hook หรือ service อยู่แล้ว
- ใช้ `dependency_search` ก่อนเปลี่ยน type ที่ใช้ร่วมกันหรือ client ที่อาจกระจายข้าม package
- ใช้ `structural_search` เมื่อต้องการรูปทรงโค้ด ไม่ใช่การจับคู่คำสำคัญ เช่น รูปแบบคอมโพเนนต์หรือเมธอดที่เกิดซ้ำ

สำหรับคำถามเชิงแนวคิด เช่น "ตามรอยขั้นตอนการส่งคำสั่งซื้อที่หน้าชำระเงิน" `get_task_context` มักเป็นจุดเริ่มต้นที่ดีกว่าการค้นหาแบบดิบ

## จุดที่หน้านี้เกี่ยวข้องมากที่สุด

หน้านี้เหมาะที่สุดสำหรับ web และแพลตฟอร์มโมโนรีโพที่ TypeScript เป็นชั้นประสานงานของหลาย package หากรีโพของคุณยังมี JS เก่าอยู่มาก ให้อ่าน [คู่มือ JavaScript](/th/languages/javascript) หากคำถามของคุณคือ "เอเจนต์เก็บโค้ดแอปและบริบทโครงสร้างพื้นฐานไว้ด้วยกันได้หรือไม่" ให้จับคู่หน้านี้กับ [Terraform](/th/languages/terraform)

## รายละเอียดเอนจิน

- TypeScript สกัดคลาส เมธอด อินเทอร์เฟซ และ type alias แทนที่จะรวมทุกอย่างให้แบนเป็นสัญลักษณ์ทั่วไป
- คำนำหน้าของสมาชิกจะถูกตัดออก แต่ตัวระบุที่มีคลาสกำกับยังคงอยู่ ซึ่งช่วยแยกความแตกต่างระหว่าง `CheckoutService.create` กับ `create` เดี่ยวๆ
- องค์ประกอบ JSX นับเป็นการสร้างอินสแตนซ์ ในไฟล์ TypeScript ที่ทำดัชนีแล้ว การทดสอบ stories และการกำหนดค่ายังคงใช้เป็นบริบทควบคู่กับโค้ดแอปพลิเคชันได้

## จุดเริ่มต้น MCP ที่มีประโยชน์

- `find_symbol`: เริ่มที่นี่เมื่อคุณรู้อินเทอร์เฟซ type alias, hook หรือเซอร์วิสที่ใช้ร่วมกันที่ต้องการตรวจสอบ
- `dependency_search`: ใช้ก่อนเปลี่ยน DTO หรือไคลเอนต์ที่ใช้ร่วมกัน เพื่อดูรัศมีผลกระทบที่สมจริงข้ามแพ็กเกจ
- `structural_search`: ใช้การค้นหาระดับ AST เมื่อคุณต้องการแพตเทิร์น ไม่ใช่การจับคู่สตริง เช่น รูปแบบคอมโพเนนต์หรือเมธอดที่ซ้ำกัน
