ฉันควรใช้ Traceur แทน Typescript เพื่อเป้าหมาย ES5 แต่พร้อมสำหรับ ES6 ไหม
ฉันกำลังทำงานบนฐานโค้ดขนาดใหญ่ที่อาจได้รับประโยชน์จาก Typescript แต่เนื่องจากในที่สุดโลกจะย้ายไปยัง ES6 ฉันควรชี้การพัฒนาไปที่ Traceur ไหม
ฉันไม่ต้องการเปลี่ยนการใช้งาน Typescript เพื่อเล็งไปที่ ES6 (เมื่อพร้อม) ดังนั้นความรู้สึกของฉันตอนนี้คือไปต่อกับ Traceur
มีใครช่วยแนะนำได้ไหม?
คำตอบ #1
ฉันแน่นอนว่าไม่เห็นด้วยกับความคิดที่ว่า TypeScript และ Traceur แตกต่างกันมาก TypeScript คือ ES5 ที่มีประเภทของตัวแปร และ Traceur คือเกี่ยวกับ ES6 เพียงเท่านั้น
ในแง่หนึ่งมี TypeScript 6 ที่เข้ากันได้กับ ES2.0 ที่กําลังดําเนินการอยู่ ในทางกลับกันมีคุณสมบัติสองสามอย่างใน Traceur ที่ทําเครื่องหมายว่าเป็นการทดลองในเอกสาร ได้แก่ ประเภทและคําอธิบายประกอบ และปรากฎว่าประเภทนั้นคล้ายกับประเภท TypeScript มากในขณะที่คําอธิบายประกอบเป็นสิ่งที่ไม่เกี่ยวข้องกับทั้ง ES6 และ TypeScript ดังนั้น Traceur จึงเป็นเพียง ES6 มากกว่า และมีชื่ออยู่แล้ว: AtScript ใช่ เรามีนามสกุลภาษาอื่น :-)
มีสไลด์ที่น่าสนใจจากการนำเสนอของ Miško Hevery ที่แสดงสิ่งที่เกิดขึ้นจริงที่นี่ ซึ่งสามารถใช้งานได้ทันทีเมื่อ TypeScript 2.0 เปิดตัว:
ดังนั้นไม่ว่าคุณจะตัดสินใจใช้สิ่งใด สิ่งสำคัญคือต้องสังเกต: พวกมันเป็นชุดย่อย คุณสามารถเขียน JS แบบ ES5/ES6 และมันจะเป็นโค้ด TypeScript ที่ถูกต้อง คุณสามารถเขียน TypeScript และมันจะเป็นโค้ด AtScript ที่ถูกต้อง
กลับมาที่คำถามของคุณ ผมอยากให้คำแนะนำอย่างถ่อมตนให้ เริ่มจาก ES6 โดยใช้ Traceur โดยปิดฟีเจอร์ทดลอง (ตอนนี้ค่อนข้างเสถียรแล้ว) และขยายตามที่จำเป็น เพราะนี่ไม่ใช่การตัดสินใจที่รุนแรงนัก ไม่ผูกมัดคุณ และยังมีพื้นที่ให้พัฒนาในอนาคต
อัปเดต: ในตอนต้นของปี 2015 ผมยังขอแนะนำให้สนใจโครงการ 6to5 (ซึ่งเปลี่ยนชื่อเป็น Babel) เป็นทางเลือกแทน Traceur มันพัฒนาอย่างรวดเร็วและมีคุณสมบัติดี ๆ บางอย่าง เช่น ความสามารถในการอ่านโค้ดที่สร้างขึ้นและการรองรับ node.js และระบบสร้างงานที่ดีกว่า
คำตอบ #2
TypeScript และ Traceur มีเป้าหมายที่แตกต่างกันโดยสิ้นเชิงและไม่สามารถเปรียบเทียบได้ในแบบที่คุณพยายามจะเปรียบเทียบ
TypeScript เป็นซูเปอร์เซ็ตของ EcmaScript ที่เพิ่มการพิมพ์แบบเข้มงวด มันรวมคุณสมบัติบางอย่างจาก ES6 แต่เป้าหมายหลักของมันคือการเพิ่มการพิมพ์แบบเข้มงวดให้กับภาษา (ในขณะที่สอดคล้องกับ ES6) ไม่ใช่เพื่อให้สามารถรองรับ ES6
ในทางตรงกันข้าม Traceur เป็นคอมไพเลอร์จาก future-EcmaScript ไปยัง current-EcmaScript มันไม่ได้เพิ่มสิ่งใดให้กับภาษาที่ยังไม่ได้ถูกเสนอสำหรับเวอร์ชันถัดไปของ EcmaScript
ถ้าคุณแค่อยากเขียน EcmaScript 6 วันนี้ ให้ใช้ Traceur ถ้าคุณต้องการการพิมพ์แบบเคร่งครัดแบบเลือกได้และประโยชน์ทั้งหมดที่มาพร้อมกับมัน รวมถึงคุณสมบัติบางอย่างของ ES6 ให้ใช้ TypeScript
