CoffeeScript 2 มาพร้อมกับการปรับปรุงไวยากรณ์ JavaScript

CoffeeScript ซึ่งเป็นภาษาง่ายๆที่รวบรวมเป็น JavaScript และมีจุดมุ่งหมายเพื่อทำให้ชีวิตของนักพัฒนาเว็บง่ายขึ้นเพิ่งย้ายไปยังรุ่นหลักที่สองซึ่งเน้นการปรับปรุงไวยากรณ์ 

CoffeeScript 2 ซึ่งอยู่ในช่วงเบต้าตั้งแต่เดือนเมษายนมีคอมไพเลอร์ที่แปลโค้ด CoffeeScript เป็นไวยากรณ์ JavaScript ที่ทันสมัย ขณะนี้ "คลาส" ของ CoffeeScript ถูกส่งออกโดยใช้classคีย์เวิร์ดตัวอย่างเช่น เวอร์ชัน 2 ยังรองรับไวยากรณ์ของฟังก์ชัน async, ไวยากรณ์การทำลายออบเจ็กต์ในอนาคตและ JSX ซึ่งเป็น JavaScript ที่มีองค์ประกอบ XML แบบสลับ

เป้าหมายหลักของ CoffeeScript 2 คือการลบความเข้ากันไม่ได้กับ JavaScript ที่อาจทำให้ไม่สามารถใช้ CoffeScript สำหรับโปรเจ็กต์และเพื่อรักษาความเข้ากันได้แบบย้อนหลังให้อยู่ในระดับสูงสุด

ความสามารถใหม่เสร็จสิ้นโดยมีการเปลี่ยนแปลงเล็กน้อยจากเวอร์ชัน 1.x นักพัฒนา CoffeeScript กล่าว ก่อนหน้านี้ทีมงานได้เตือนแล้วว่า CoffeeScript 2 จะต้องมีการเปลี่ยนแปลงที่ไม่สมบูรณ์เพื่อให้เป็นไปตามข้อกำหนด ECMAScript 2015 ขึ้นไป “ โครงการ CoffeeScript ในปัจจุบันส่วนใหญ่ควรจะสามารถอัพเกรดได้โดยไม่จำเป็นต้องทำการ refactoring เพียงเล็กน้อยหรือแทบไม่มีเลย” นักพัฒนากล่าว การเปลี่ยนแปลงที่ผิดพลาดบางประการเกี่ยวข้องกับฟังก์ชันที่ถูกผูกไว้ (ลูกศรอ้วน) ฟังก์ชันตัวสร้างที่ถูกผูกไว้และการแยกวิเคราะห์ของ Literate CoffeeScript ซึ่งได้รับการปรับโครงสร้างใหม่เพื่อให้ระมัดระวังมากขึ้นเกี่ยวกับการไม่ปฏิบัติต่อรายการที่เยื้องเป็นบล็อกรหัส

การปรับปรุงไวยากรณ์ JavaScript ให้ทันสมัยหมายความว่านักพัฒนาอาจจำเป็นต้องแปลงเอาต์พุตของคอมไพเลอร์โดยการทรานสไพเลชั่นจะแปลงซอร์สโค้ดเป็นซอร์สโค้ดที่เทียบเท่ากัน แต่ต่างกัน เอกสาร CoffeeScript อ้างถึงกรณีที่นักพัฒนาต้องการแปลง JavaScript ที่ทันสมัยเป็น JavaScript รุ่นเก่าเพื่อให้ทำงานใน Node.js เวอร์ชันเก่าหรือเบราว์เซอร์รุ่นเก่า การสนับสนุนในตัวสำหรับ Babel Transpiler รวมอยู่ใน CoffeeScript

ด้วยเวอร์ชัน 2 ตอนนี้ CoffeeScript จะแสดงความคิดเห็นแบบบรรทัดหลังจากที่ทิ้งไปในเวอร์ชัน 1.1 ขณะนี้อนุญาตให้บล็อกความคิดเห็นได้ทุกที่โดยเปิดใช้งานคำอธิบายประกอบประเภทคงที่ เครื่องมือบรรทัดคำสั่งกาแฟได้รับการปรับปรุงในการอัปเกรดเช่นกัน

โปรดทราบว่าคุณลักษณะบางอย่างของ JavaScript ถูกละเว้นโดยเจตนาเช่นletและvarฟังก์ชันที่ตั้งชื่อและgetและsetคำหลัก ในขณะที่let ฟังก์ชันและตั้งชื่อถูกละไว้เพื่อความเรียบง่าย แต่varถูกละไว้เพื่อให้นักพัฒนา CoffeeScript ไม่ต้องจัดการกับการประกาศตัวแปรgetและset คำหลักและถูกละไว้เพื่อหลีกเลี่ยงความคลุมเครือทางไวยากรณ์ การละเว้น CoffeeScripts ของคุณลักษณะ JavaScript เหล่านี้ไม่มีผลต่อความเข้ากันได้หรือการทำงานร่วมกันกับโมดูลหรือไลบรารี JavaScript