Skip to content

TypeScript 7 ปรับปรุงการใช้หน่วยความจำของ Go to Implementation

เผยแพร่: 30 กรกฎาคม 2026

Microsoft ได้ merge การแก้ไขปัญหาการเพิ่มขึ้นของการใช้หน่วยความจำสำหรับ Go to Implementation ในบริการภาษาแบบเนทีฟของ TypeScript

สิ่งที่เปลี่ยนแปลง

บริการภาษาใช้ worklist แบบ breadth-first เพื่อค้นหา implementation สำหรับสมาชิกของ interface ที่มี implementation จำนวนมาก การค้นหาซ้ำทั่วทั้งโปรแกรมอาจส่งคืน reference เดิมซ้ำอีกได้ ดังนั้น reference ที่เก็บไว้ งานที่อยู่ในคิว และกลุ่มผลลัพธ์จึงอาจเพิ่มขึ้นแบบกำลังสองและใช้หน่วยความจำจนหมดในโปรเจกต์ขนาดใหญ่ที่มีชนิดข้อมูลซ้อนลึก

การแก้ไขนี้กำจัด reference node ที่ซ้ำกันก่อนเพิ่มลงในคิวงาน และหลีกเลี่ยงการเก็บนิยาม symbol ที่ซ้ำกัน regression test จะตรวจสอบว่าเมื่อเพิ่มจำนวน implementation เป็นสองเท่า การใช้หน่วยความจำจะเพิ่มขึ้นในระดับใกล้เคียงเชิงเส้นแทนที่จะเป็นแบบกำลังสอง

เหตุใดจึงสำคัญ

ขณะนี้ Go to Implementation สามารถประมวลผลรูปแบบนี้ได้โดยไม่เก็บ reference ภายในชุดเดิมซ้ำ ๆ การตอบกลับสุดท้ายของ editor มีการกำจัดข้อมูลซ้ำอยู่แล้ว ดังนั้นการเปลี่ยนแปลงนี้จึงมุ่งแก้หน่วยความจำและงานเบื้องหลังที่จำเป็นต่อการสร้างการตอบกลับดังกล่าว

ความพร้อมใช้งาน

การเปลี่ยนแปลงนี้ถูก merge เข้าสู่ฐานโค้ด TypeScript แบบเนทีฟหลังการเผยแพร่ TypeScript 7.0 แหล่งข้อมูลไม่ได้ระบุเวอร์ชัน npm แบบเสถียรที่มีการแก้ไขนี้ ดังนั้นผู้ใช้ควรตรวจสอบ release notes ของเวอร์ชันที่ติดตั้งก่อนอาศัยการแก้ไขนี้

แหล่งข้อมูล

อ่านการเปลี่ยนแปลงอย่างเป็นทางการ: Fix O(K^2) OOM issue in go-to-implementation