เสนอให้เพิ่มไวยากรณ์พร้อมข้อมูลประเภทให้กับภาษา JavaScript

Microsoft, Igalia และ Bloomberg ได้ริเริ่มที่จะรวมไวยากรณ์ไว้ในข้อกำหนด JavaScript สำหรับคำจำกัดความประเภทที่ชัดเจน คล้ายกับไวยากรณ์ที่ใช้ในภาษา TypeScript ปัจจุบัน การเปลี่ยนแปลงต้นแบบที่เสนอเพื่อรวมไว้ในมาตรฐาน ECMAScript จะถูกส่งไปเพื่อการอภิปรายเบื้องต้น (ระยะที่ 0) ในการประชุมครั้งต่อไปของคณะกรรมการ TC39 ในเดือนมีนาคม มีการวางแผนที่จะย้ายไปยังขั้นตอนแรกของการพิจารณาข้อเสนอโดยการมีส่วนร่วมของชุมชนผู้เชี่ยวชาญจาก ECMA

การมีข้อมูลประเภทที่ระบุอย่างชัดเจนจะช่วยให้คุณสามารถหลีกเลี่ยงข้อผิดพลาดมากมายในระหว่างกระบวนการพัฒนา ทำให้สามารถใช้เทคนิคการปรับให้เหมาะสมเพิ่มเติม ลดความซับซ้อนของการดีบัก และทำให้โค้ดอ่านได้ง่ายขึ้น และง่ายขึ้นสำหรับการแก้ไขและการสนับสนุนโดยนักพัฒนาบุคคลที่สาม มีการเสนอการสนับสนุนประเภทเพื่อใช้เป็นคุณสมบัติเสริม - เอ็นจิ้น JavaScript และรันไทม์ที่ไม่รองรับการตรวจสอบประเภทจะเพิกเฉยต่อคำอธิบายประกอบที่มีข้อมูลประเภทและประมวลผลโค้ดเหมือนเมื่อก่อน โดยถือว่าข้อมูลประเภทเป็นความคิดเห็น แต่เครื่องมือตรวจสอบประเภทจะสามารถใช้ข้อมูลที่มีอยู่เพื่อระบุข้อผิดพลาดที่เกี่ยวข้องกับการใช้ประเภทที่ไม่ถูกต้อง

ยิ่งไปกว่านั้น ตรงกันข้ามกับข้อมูลประเภทที่ระบุโดยใช้คำอธิบายประกอบ JSDoc ที่ระบุในรูปแบบของความคิดเห็น การบ่งชี้โดยตรงของประเภทโดยตรงในโครงสร้างคำจำกัดความของตัวแปรจะทำให้โค้ดมีภาพ เข้าใจง่าย และแก้ไขได้ง่ายขึ้น ตัวอย่างเช่น IDE ที่รองรับ TypeScript จะสามารถเน้นข้อผิดพลาดในโค้ด JavaScript ที่พิมพ์ได้ทันทีโดยไม่ต้องแปลงเพิ่มเติม นอกจากนี้ การสนับสนุนประเภทในตัวจะทำให้สามารถรันโปรแกรมที่เขียนด้วยภาษา JavaScript ที่พิมพ์ เช่น TypeScript และ Flow โดยไม่ต้องแปลจากภาษาหนึ่งไปอีกภาษาหนึ่ง

เสนอให้เพิ่มไวยากรณ์พร้อมข้อมูลประเภทให้กับภาษา JavaScript

ในบรรดาประเภทต่างๆ มีการเสนอให้เพิ่ม "สตริง", "หมายเลข" และ "บูลีน" ซึ่งสามารถใช้เพื่อกำหนดตัวแปร พารามิเตอร์ฟังก์ชัน องค์ประกอบอ็อบเจ็กต์ ฟิลด์คลาส อาร์เรย์ที่พิมพ์ (“หมายเลข []”) นอกจากนี้ยังเสนอให้รองรับประเภทที่ผสาน (“สตริง | หมายเลข”) และชื่อสามัญ ให้ x: สตริง; ฟังก์ชั่นเพิ่ม (a: number, b: number) { return a + b; } บุคคลอินเทอร์เฟซ { ชื่อ: สตริง; อายุ:หมายเลข; } ฟังก์ชัน foo (x: T) { กลับ x; } ฟังก์ชั่น foo(x: string | number): string | หมายเลข { ถ้า (ประเภทของ x === จำนวน) { กลับ x + 1 } อื่น ๆ { กลับ x + "!" } }

ที่มา: opennet.ru

เพิ่มความคิดเห็น