ความแตกต่างระหว่าง TypeScript และ Dart [ปิด]


85

Microsoft เพิ่งเปิดตัว typescript ซึ่งเป็นภาษาการเขียนโปรแกรมเหมือน JavaScript ใหม่ ก่อนหน้านี้ฉันได้ยินเกี่ยวกับ Dart ซึ่งเป็นภาษาการเขียนโปรแกรมใหม่ที่สร้างโดย Google เพื่อแก้ปัญหาที่เกี่ยวข้องกับ Javascript เช่นประสิทธิภาพความสามารถในการปรับขยายและอื่น ๆ

จุดประสงค์ของทั้งสองภาษาใหม่ดูเหมือนกันสำหรับฉัน .. คุณคิดอย่างไร?

วัตถุประสงค์ของภาษาเหมือนกันหรือไม่

อะไรคือความแตกต่างที่แท้จริงของพวกเขา?


ดูการสนทนาที่นี่: programmers.stackexchange.com/questions/166978/…
diadiora

คำตอบ:


60

การอ้างอิงBob Nystrom :

TypeScript ดูเหมือนจะดีถ้าคุณชอบความหมายของ JS หรือมี codebase JS ขนาดใหญ่ที่คุณลงทุน แต่คุณก็มีปัญหาในการบำรุงรักษา เส้นทางสู่ความสำเร็จนั้นราบรื่นกว่าเพราะมันเข้ากันได้กับ JS

Dart กำลังเสี่ยงเดิมพัน มันไกลจาก JS ในหลาย ๆ วิธีซึ่งก็คือฉันคิดว่าส่วนใหญ่ดีในฐานะโปรแกรมเมอร์ Dart แบบวันต่อวัน แต่มันทำให้อุปสรรคของการเข้าเรียนสูงขึ้น แต่ในทางกลับกันสำหรับอุปสรรคการเข้าที่สูงขึ้นคุณจะได้รับ:

  • ต้นไม้สั่น
  • Getters และ setters (แม้ว่าฉันจะสันนิษฐาน TypeScript จะได้รับในที่สุด)
  • ผู้ประกอบการมากไป
  • ขอบเขตบล็อกจริงไม่มีการยกไม่มีIIFE s
  • VM ดั้งเดิม
  • ความหมายเท่าเทียมกันมีเหตุผล
  • ไม่มีความบ้าคลั่งแปลงโดยปริยายแปลก
  • ผูกพันผูกพัน thisทุกที่
  • mixins
  • คำอธิบายประกอบ
  • ระบบนำเข้า
  • ตัวดำเนินการตัวห้อยที่ผู้ใช้กำหนด
  • Generics ด้วยทำให้เป็นจริง
  • กระจก
  • ชั้นเรียนคอลเลกชันที่ดีขึ้น
  • DOM DOM ที่สะอาดขึ้น

นอกจากนี้เขาเขียนในhttp://www.reddit.com/r/programming/comments/10rkd9/welcome_to_typescript/c6g37xd :

ฉันอยู่ในทีม Dart ของ Google ดังนั้นฉันจึงดูจากมุม / อคตินั้นตามธรรมชาติ นี่คือบางสิ่งที่สุ่มจับตาของฉันส่วนใหญ่จะเปรียบเทียบกับ Dart ฉันใช้เวลาเพียงไม่กี่นาทีในการอ่านข้อมูลดังนั้นอย่าดำเนินการใด ๆ กับเรื่องนี้อย่างจริงจัง ...

ไม่มียาชื่อสามัญ

ฉันเดาว่าบางประเภทนั้นดีกว่าไม่มีเลย แต่มันก็ยากที่จะทำแบบนั้น TypeScript มีประเภทอาเรย์ในตัวและประเภทของวัตถุครอบคลุมกรณีการใช้งานประเภท "map" บางประเภท แต่การไม่สามารถกำหนดประเภททั่วไปของคุณเองนั้นเป็นเพียงการลาก เอกสารบอกว่าเมื่อมีการเพิ่มยาชื่อสามัญจะทำงานโดยใช้การลบประเภทซึ่งเป็นสิ่งที่ฉันคาดหวังเพราะมันเป็นสไตล์ "รวบรวมเพื่อน้ำหนักเบา JS" แต่นั่นอาจเป็นความเจ็บปวดด้วย เป็นเรื่องดีที่คุณจะสามารถทำสิ่งต่าง ๆ ด้วยอาร์กิวเมนต์ชนิดที่รันไทม์ในบางครั้ง

ทุกประเภทเป็นโมฆะ

โผเป็นวิธีเดียวกัน ทำให้ฉันเศร้าทั้งสองกรณี

ไวยากรณ์คำอธิบายประกอบประเภทนั้นดี

เกือบทุกภาษาที่มีคำอธิบายประกอบประเภทที่เป็นตัวเลือก (ML, Scala, F #, Kotlin ฯลฯ ) จะมี "postfix after a:. Dart พยายามที่จะใช้คำอธิบายประกอบประเภท C-style ซึ่งทำให้เกิดกรณีมุมที่น่ารังเกียจบางอย่าง โดยเฉพาะไวยากรณ์สำหรับประเภทฟังก์ชั่น:

function takeCallback(callback : (n : number) => number)
{ ... }

อินเทอร์เฟซถูกพิมพ์โครงสร้างคลาสที่ถูกพิมพ์ชื่อ

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

ประเภททั่วไปที่ดีที่สุดอาจล้มเหลว

นั่นหมายความว่านี่เป็นข้อผิดพลาดประเภท:

[1, true]

คุณสามารถโอเวอร์โหลดในอินเทอร์เฟซโดยลายเซ็นพารามิเตอร์

นี่มันเจ๋งจริงๆเพราะมันช่วยให้คุณมีวิธีอนุมานชนิดที่แม่นยำยิ่งขึ้นผ่านการเรียกใช้ฟังก์ชันที่มีการสลับชนิดไดนามิก ตัวอย่างเช่น:

interface Doubler {
  double(s : string) : string;
  double(n : number) : number;
}

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

มีไวยากรณ์เฉพาะสำหรับประเภทอาร์เรย์

ทำให้รู้สึกเพราะไม่มียาชื่อสามัญ นอกจากนี้ยังเป็นเรื่องที่ดีและสั้นซึ่งเป็นสิ่งที่ดี แต่โดยส่วนตัวแล้วผมชอบยาชื่อสามัญทั่วไปมากกว่าคอลเลกชันกรณีพิเศษแบบครั้งเดียว

ไม่มีการลดทอนโดยปริยาย

หนึ่งในคุณสมบัติของระบบประเภทที่ผิดปกติมากขึ้นของ Dart คือความเข้ากันได้ของการมอบหมายนั้นเป็นแบบสองทิศทาง: คุณสามารถ downcast โดยไม่มีคำเตือน นอกเหนือจากกรณีพิเศษทั่วไปของการมอบหมายให้ / จาก (แบบไดนามิกในภาษาอื่น ๆ ), TypeScript ไม่อนุญาต คุณต้องพิมพ์คำยืนยัน โดยส่วนตัวแล้วฉันชอบแนวทางของ TypeScript ที่นี่

ฟังก์ชั่นลูกศรและคำศัพท์นี้

นี่เป็นเพียงแม่และพายแอปเปิ้ล ฉันชอบมัน. (โผก็มีสิ่งนี้เช่นกันและมันก็ถูกผูกไว้ด้วยคำศัพท์เสมอ)

โดยรวมแล้วมันดูเรียบร้อยดี หากคุณต้องการซีแมนติกของ JS ที่เหมือนกัน (ดีและไม่ดี) แต่ต้องการประเภทที่แตกต่างกันไป TypeScript ก็ดูดี มันเป็นเหมือนคอมไพเลอร์ปิด แต่มีไวยากรณ์ที่ดีกว่า

หากคุณต้องการสิ่งที่ก้าวร้าวมากขึ้นจากไวยากรณ์และความหมายของ JS แล้วดูเหมือนว่า TypeScript ไม่ใช่อย่างนั้น


17
ต้นไม้สั่นไหวคืออะไร?
citykid

4
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการเขย่าต้นไม้: blog.sethladd.com 2013/01/31
เซทแลดด์

19
"เครื่องมือโผสนับสนุนการเขย่าต้นไม้เทคนิคในการ" เขย่า "ปิดโค้ดที่ไม่ได้ใช้ดังนั้นการลดขนาดของแอปพลิเคชันที่ปรับใช้ฉันสามารถอิมพอร์ตริชไลบรารีที่เต็มไปด้วยความดีที่มีประโยชน์ในแอปพลิเคชันของฉัน ในผลลัพธ์ที่สร้างของฉัน " ขอบคุณ
citykid

3
ในขณะที่อยู่ในสถานะแสดงตัวอย่าง typescript อยู่ในสภาพที่สมบูรณ์แบบสำหรับการใช้งานในโครงการมืออาชีพที่จัดส่งในวันพรุ่งนี้ ภาษาและเครื่องมือทำงานได้โดยไม่มีปัญหาร้ายแรงหรือแม้แต่ปัญหาใด ๆ ก็ตาม
citykid

4
ดังที่ @JustAnotherUserYouMayKnowOrNot ตั้งข้อสังเกตว่า TypeScript ได้เพิ่มชื่อสามัญใน 0.9 blogs.msdn.com/b/typescript/archive/2013/06/18/…
Jon Mabe

60

ในขณะที่คำถามคือ "วัตถุประสงค์ของภาษาเหมือนกันหรือไม่" คำถามที่แท้จริงคือ: "เราจะทำให้การเขียนโปรแกรมเว็บดีขึ้นจากที่ที่เราอยู่ได้อย่างไร" .

ทั้งสองโครงการพยายามทำสิ่งนี้เพื่อพิจารณา

  • ภาษาการเขียนโปรแกรม (TypeScript ทำให้ขั้นตอนเล็ก แต่สะอาดมาก Dart ทำให้การปฏิวัติครั้งต่อไปที่ยังคงเคลื่อนไหวอยู่)

  • การทำงานร่วมกันกับรหัส js ที่มีอยู่ (0 การเปลี่ยนแปลงใน TypeScript ซึ่งคอมไพล์กับ js, ซับซ้อนใน Dart เนื่องจาก 2 VMs พูดคุยกัน)

  • การปฏิบัติด้านวิศวกรรมซอฟต์แวร์ (Dart only, web component และ shadow dom)

ในช่วง 3 วันที่ผ่านมาฉันดำดิ่งสู่ Dart และจากนั้นเข้าสู่ TypeScript รหัสฐาน CoffeeScript ของฉันไปที่รหัสบรรทัด 2000s มากเกินไปที่จะจัดการกับ CoffeeScript ที่น่ารัก แต่นุ่มเกินไป ปัญหาที่ฉันเผชิญคือ CoffeeScript ขาดคุณสมบัติที่ภาษาที่ออกแบบมาสำหรับการเขียนโปรแกรมระดับกลางถึงขนาดใหญ่ ได้แก่ อินเตอร์เฟสโมดูลความปลอดภัยของประเภท แต่มีหนึ่งแม้จะมากปัญหาที่รุนแรงมากขึ้นด้วยเครื่องชงกาแฟและ js: ผู้ js ชี้ "นี้" ความแปลกประหลาดได้รับผลกระทบสุขภาพจิตของฉันและ CoffeeScript ไม่ได้ช่วยอะไรที่นี่

ดังนั้นที่นี่ผลลัพธ์ของฉันหลังจาก 3 วันของการประเมินผลและการใช้งาน:

โผ

ไปอย่างทั่วถึงผ่านการกวดวิชาอ่านหนังสือ 1 เล่ม skimming หนังสือเล่มที่ 2 และพยายามสาธิต ฉันคิดว่าโผที่เป็นอนาคต จากนั้นฉันพยายามย้ายแอพของฉันไปที่ Dart นั่นคือความกระตือรือร้นของฉันลดลงจาก 100 เป็น 10 นี่คือเหตุผล:

  1. แก้ไขโผเป็นวิธีเดียวที่จะเขียนโปรแกรมโผ ในขณะที่ปลั๊กอินสำหรับ Sublime Text มีอยู่พวกเขาไม่ได้จัดเตรียมคุณสมบัติเช่นการใช้งานภายในระบบการเติมเต็มโค้ด (แก้ไขฉันหากฉันผิด) Dart Editor เป็นอย่างไรก็ตามในคุณภาพก่อนอัลฟา ในขณะที่มันรองรับสิ่งมหัศจรรย์ supercool เช่นการปรับปรุงหน้าเว็บเมื่อคุณแก้ไขไฟล์ CSS (! เจ๋งจริง ๆ ) มันแฮงค์หรือล้มเหลวหลายครั้งต่อนาที ดังนั้นคุณพิมพ์ตัวอักษร 5 ตัวและ 2 ครั้งคุณต้องรอ 2 วินาทีหรือ 15 วินาทีระหว่างการพิมพ์ และฉันมีโครงการที่มีโค้ดบางบรรทัดดังนั้นไม่ต้องการรอสิ่งที่เกิดขึ้นเมื่อมีบรรทัด 1,000 บรรทัดย้ายไฟล์จากโฟลเดอร์หนึ่งไปยังอีกโฟลเดอร์หนึ่งภายใน Dart Editor เกิดความผิดพลาด แก้จุดบกพร่องด้วย Dart Editor นั้นเป็นที่แรกที่เห็นได้ดีกว่าเครื่องมือแก้จุดบกพร่อง js ทั้งหมดที่ฉันรู้ (chrome เป็นตัวเลือกของฉัน) แต่ยังมีหลายสิ่งที่ขาดหายไป: ไม่มีหน้าต่างทันที (ซึ่งทำให้ js ดีขึ้นมากในขณะนี้)

  2. ความเป็นไปได้ทางการเมืองและการหลบหนี : บางคนบอกว่า Apple, MS และ Firefox จะไม่ให้ Dart VMs ดีฉันไม่แน่ใจ แต่อย่างน้อยสำหรับ Apple นี้ปรากฏขึ้นในขณะนี้แน่นอนมาก สำหรับคนอื่น ๆ มันมีแนวโน้มมากกว่าที่ตรงกันข้าม ดังนั้นไม่มีปัญหาเราสามารถแปลง Dart เป็น JavaScript วิธีการรวมนี้ใช้งานได้ดีจริงๆ Dart รักษา js stub ที่เก็บรหัส js ที่เชื่อมต่อกับ Dart Editor ดังนั้นprint()คำสั่งยังคงปรากฏใน Dart Editor เย็น แต่ที่นี่มา แต่: รอยเท้าของรหัสแปลงดังกล่าวสูง ประมาณ 150kB (ก่อนการลดขนาด) ฉันไม่ได้ขุดมากเกินไปในขนาดที่แน่นอนดังนั้นอย่าตอกตะปูลงบนสิ่งนี้

  3. ครบกําหนดภาษา นอกเหนือจากปัญหาที่ร้ายแรงเกินไปที่ Dart Editor โผล่เข้ามาในใบหน้าของฉัน 3 ครั้งต่อนาทีฉันก็พบว่าไม่สามารถยอมรับได้ว่าทุกแหล่งที่มาเกี่ยวกับรหัส Dart ที่คุณพบนั้นใช้ Dart ที่แตกต่างกัน ภาษาเปลี่ยนไปทุกวัน คุณพบโพสต์จาก 5 สัปดาห์ที่ผ่านมา? มันล้าสมัยแล้ว คุณลองตัวอย่างจากการสอนของ Google? ตัวอย่างอย่างน้อย 1 รายการไม่ได้รวบรวมตั้งแต่ API เปลี่ยนไป แม้แต่เรื่องธรรมดา ๆ เช่นการแนบเหตุการณ์ไปยังองค์ประกอบ DOM ก็เป็นไปได้ด้วยดี

  4. การรวมเข้ากับไลบรารี js ที่มีอยู่นั้นมีส่วนเกี่ยวข้องบ้างเล็กน้อย 2 VMs ต้องสื่อสารที่นี่มันยุ่งยาก

โดยสรุปคุณไม่สามารถใช้ Dart อย่างจริงจังในวันนี้และการดำน้ำในนั้นไม่สนุกมากนักเนื่องจากข้อ 1 และ 3 ทั้งสองประเด็นจะหายไปเมื่อเวลาผ่านไป ประมาณ 2 จุด Google ได้เผยแพร่การวัดประสิทธิภาพเมื่อหลายวันก่อนแสดงให้เห็นว่า js ที่คอมไพล์แล้วดีกว่า js ที่เขียนด้วยลายมือ คำชมเชยงานที่ยอดเยี่ยมของฉัน เวลาในการโหลดอาจยังค้างอยู่เนื่องจากปัญหารอยเท้าดังกล่าว อย่างไรก็ตามหากมีการใช้รหัสรอยเท้าในหลาย ๆ ไซต์ก็อาจมีแคชและข้อความเสียงหายไปเช่นกัน

ดังนั้น: ฉันคิดว่า Dart เป็นโครงการที่ยอดเยี่ยมการใช้งานในขณะนี้มีความเสี่ยงที่คาดเดาไม่ได้และจะใช้เวลาปีนี้เพื่อให้ได้ระดับที่มั่นคง

สิ่งที่พิมพ์ด้วยพิมพ์ดีด

การประเมิน TypeScript นั้นง่ายมากใช้เวลา 1 หรือ 2 ชั่วโมงและคุณรู้ทุกอย่าง การอ่านเอกสารข้อมูลภาษาและหนังสือสั้น ๆ (TypeScript เปิดเผย) เปิดเผยฉันรู้ทุกอย่างและเริ่มเขียนโปรแกรม ฉันแล้วก็ต้องประหลาดใจเมื่อพบว่าการเพิ่ม typescript เพื่อ JavaScript เพียงแค่กรอกทุกความต้องการอย่างจริงจังผมมีการเขียนโปรแกรมเพื่อเพิ่มลูกค้าของฉัน ไฮไลท์ที่นี่:

  1. อินเตอร์เฟซ การห่อหุ้มและส่วนต่อประสานช่วยให้ฉันสามารถจัดโครงสร้างรหัสได้อย่างง่ายดาย ที่สมบูรณ์แบบ!

  2. ระดับรัฐ . TypeScript อนุญาตให้แสดงสถานะที่อินสแตนซ์ของคลาสดำเนินการอย่างชัดเจนหรือดีกว่าบังคับให้มัน นี่เป็นขั้นตอนที่ใหญ่กว่าเมื่อเทียบกับ js หรือกาแฟ

  3. thisเรียกความบ้าคลั่งลดลง ฟังก์ชันลูกศรภายใน TypeScript ทำให้thisตัวชี้เหมือนกับพลเมืองทั่วไปที่มีพฤติกรรม

  4. บรรณาธิการ, Intellisense TypeScript มาพร้อมกับ Intellisense ที่สมบูรณ์แบบสูงสุด 100% ที่ตอบสนองในช่วงไมโครหรือมิลลิวินาทีที่ใช้จาก Visual Studio เมื่อตั้งโปรแกรม C # ส่วนหัว typescript สำหรับห้องสมุด js ที่สำคัญทั้งหมดที่มีอยู่มากเกินไป ยิ่งใหญ่ยิ่งใหญ่ยิ่งใหญ่

  5. ประสบการณ์และความเสี่ยง การใช้ TypeScript มีความเสี่ยงเป็นศูนย์ภาษามีการกำหนดไว้อย่างชัดเจนมั่นคงอย่างสมบูรณ์แบบมันเป็นเพียง js กับน้ำตาลไม่มีอะไรมองไม่เห็น

ที่จริงแล้วการปรับปรุงเหล่านี้ให้ทุกอย่างที่ฉันต้องการ สิ่งเดียวที่ฉันอยากเห็นในอนาคตคือคอลเล็กชันทั่วไป แต่นั่นคือถั่วลิสง

แล้วเรื่องประสิทธิภาพล่ะ ในขณะที่ฉันพิจารณาตัวเองว่าเป็นคนที่คลั่งไคล้ในการแสดง แต่ฉันไม่เชื่อว่าจะมีโครงการใดที่จะเลือกเทคโนโลยีที่นี่ตามประสิทธิภาพ ทั้งสองอยู่ใน js liga

หากคุณสนใจในอนาคตของการเขียนโปรแกรมเว็บทั้งสองเป็นความพยายามที่ยอดเยี่ยม TypeScript นั้นสามารถใช้งานได้จริงมากขึ้นในขณะนี้ Dart เป็นโครงการทดลองที่น่าสนใจมากซึ่งจะสามารถใช้งานได้เมื่อบรรณาธิการและ debuggers พร้อมใช้ มันจะขึ้นอยู่กับการเมือง

ไม่ว่าในกรณีใด 3 วันที่สนุกที่สุดและฉันเรียนรู้มากถ้าคุณหาเวลามันใช้เวลา 1 วันสำหรับ Dart และ 2 ชั่วโมงสำหรับ TypeScript เพื่อแสดงความคิดเห็นของคุณเอง ลองมัน.

อัปเดตตุลาคม 2557

มันผ่านมานานแล้วและโพสต์อดีตมันดูเหมือนว่าสมมติฐานที่ typescript เป็นเส้นทางที่ปลอดภัยที่จะไปค่อนข้างถูกต้อง ฉันเพิ่งพบคำสั่งที่โดดเด่น (มาก) เกี่ยวกับ Typescript, Dart and Closure:

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

http://blog.bolinfest.com/2013/01/generating-google-closure-javascript.html

Michael Bolin เป็นเวลานาน (อดีต) google (อดีต) fb ฮีโร่ฝ่ายหน้านอกจากนี้ยังมีส่วนร่วมในการปิด google (รับหนังสือของเขาเกี่ยวกับการปิด)

Google Traceur

การประเมินของ Google ในการใช้ชีวิต ECMA Script 6 วันนี้เป็นโครงการ Traceur: https://github.com/google/traceur-compiler

เมื่อเทียบกับ typescript แล้วการสนับสนุนการใช้เครื่องมือถือว่าอยู่ไกลมากจนถึงทุกวันนี้ อย่างไรก็ตามในทางกลับกันมันเร็วกว่ามากในการใช้ภาษา js ในอนาคตที่ยอดเยี่ยมเช่นการทำซ้ำหรือความเข้าใจ

กระแส Facebook, Google AtScript

ให้คุณสมบัติที่คล้ายกันเป็น TypeScript

"ใครบางคนอาจสงสัยว่ามีอะไรบ้างในโซลูชันการตรวจสอบประเภท JavaScript ที่แตกต่างกันเหล่านี้และสิ่งที่ต้องทำเกี่ยวกับเรื่องนี้ข่าวดีก็คือ Microsoft, Facebook และ Google กำลังร่วมมือกันในเรื่องนี้

ทีม TypeScript ทำงานร่วมกับทั้งทีม Flow และ AtScript เพื่อช่วยให้แน่ใจว่าทรัพยากรที่สร้างขึ้นโดยชุมชนการพิมพ์ JavaScript สามารถใช้กับเครื่องมือเหล่านี้ได้ มีโครงการจำนวนมากที่สามารถเรียนรู้จากกันและกันและเรารอคอยที่จะทำงานร่วมกันต่อไปและสร้างเครื่องมือที่ดีที่สุดที่เราสามารถทำได้สำหรับชุมชน JavaScript ในระยะยาวเราจะทำงานเพื่อพับคุณสมบัติที่ดีที่สุดของเครื่องมือเหล่านี้ลงใน ECMAScript ซึ่งเป็นมาตรฐานที่อยู่เบื้องหลัง JavaScript "

บทความ infoq เกี่ยวกับการไหลของ FB


ฉันจะรอจนกว่า Google จะเริ่มใช้ Dart สำหรับโครงการส่วนใหญ่ของตัวเอง (ถ้ามี) - เริ่มกินเป็นอาหารสุนัขในคำอื่น ๆ Dart ยังฟังดูเหมือน Silverlight โดยไม่มีส่วน XAML เพียงภาษาเดียว แต่รวมเข้ากับ JS / HTML ได้ดียิ่งขึ้น
Den

1
ใช่โผเป็นสิ่งที่เราสามารถดูและรอในอนาคตในขณะที่ typescript พร้อมสำหรับการพัฒนาอาชีพในขณะนี้ ดังนั้นการเปรียบเทียบ typescript กับ Dart คือการเปรียบเทียบแอปเปิ้ลกับต้นกล้าสีส้ม
citykid

7
นี่เป็นคำตอบที่ลึกซึ้งมาก ขอบคุณสำหรับการเขียน
Darshan Sawardekar

2
ไม่ทราบว่าthisบริบท"แก้ไข" ของ typescript ในขณะที่คุณยังต้องผูกฟังก์ชันการเรียกกลับที่ประกาศภายในเมธอดด้วยthisบริบทของเมธอดเพื่อเข้าถึงแอ็ตทริบิวต์คลาส อะไรคือ "แก้ไข" อะไร?
nurettin

1
จุดที่ถูกต้อง ในขณะที่ จำเป็นต้องมีการผูกในบางครั้ง นี่เป็นนามแฝงภายในฟังก์ชั่นลูกศรดังนั้นปัญหาจึงได้รับการลดน้อยลง
citykid

17

การอ้างถึง Scott Hanselman:

ผู้คนได้เปรียบเทียบ TypeScript กับ Dart นั่นเป็นการเปรียบเทียบแอปเปิ้ลกับคาร์บูเรเตอร์ TypeScript สร้างบน JavaScript ดังนั้นจึงไม่มีปัญหาการทำงานร่วมกันของ JS Dart เป็นเครื่องเสมือนจริงที่เขียนขึ้นใหม่ทั้งหมด โผเข้าด้วยกันด้วย JavaScript ... แต่ไม่ใช่ JS มันไม่ได้ใช้ประเภทหมายเลข JavaScript เช่น

จากทำไม typescript ต้องเป็นคำตอบอะไร?


8
ฉันสับสนเล็กน้อยโดยสุจริต TypeScript ไม่ใช่ JS จริงๆใช่ไหม? var x = {}; x.foo = 5; //Doesn't work in typescriptและvar e = window.event ? window.event : e; //Doesn't work in typescriptตัวอย่างข้างต้นจะล้มเหลวคอมไพเลอร์ TypeScript ฉันพลาดอะไรไปรึเปล่า? ฉันไม่สามารถ "วาง" JavaScript ของฉันและใช้ประเภทเมื่อฉันรู้สึกเช่นนั้น ฉันต้องเรียนรู้เกี่ยวกับไวยากรณ์และโครงสร้างทุกอย่างที่มีชนิดใหม่
aikeru

@ aikeru อืมคุณถูกต้องแล้ว ดูเหมือนว่าจะกำจัดความยิ่งใหญ่ของ JS ออกไป ฉันจะใช้เครื่องมือใหม่นี้ แต่ตอนนี้ฉันมีความคิดที่สอง
Chev

3
ไม่เห็นด้วย มันเหมือนกับการเปรียบเทียบแอปเปิ้ลกับลูกแพร์หรือคาร์บูเรเตอร์กับการฉีดเชื้อเพลิง มีหลายสิ่งหลายอย่างเกี่ยวกับสองสิ่งนี้ที่นำไปสู่การคิดเกี่ยวกับพวกเขาในเวลาเดียวกัน
hippietrail

สำหรับบันทึกนี้ทำงานvar x = {}; x['foo'] = 5;และไม่มากเกินไปvar y:any = {}; y.foo = 5;แต่ผมก็แปลกใจเล็กน้อยที่จะหาคุณขวาเกี่ยวกับเรื่องนี้ - การรับรู้ประเภทของการ{}เป็นมากกว่า{} anyอาจเป็นปัญหาการอนุมานประเภท ฉันโพสต์ปัญหาที่นี่ - เราจะดูว่าพวกเขาตอบสนองอย่างไร
mindplay.dk

3

ต้องพูดสอดในการสนทนานี้กับการค้นพบของฉันเองเมื่อเร็ว ๆ นี้

วันที่: TypeScript

MS ใช้วิธีการที่ดีในความจริงที่ว่าคุณสามารถกระโดดเข้าและออกจาก TS และ JS ได้อย่างง่ายดาย เราใช้ AngularJS เป็นหลักในการพัฒนาของเราและพบว่าในขณะที่มีเอกสารไม่มากสำหรับการแปลง Angular เป็น TypeScript มันเป็นการเพิ่มเติมที่ดีในการรวม TypeScript เข้ากับเวิร์กโฟลว์ Dev ของเรา

2nd: โผ

Dart เป็นขั้นตอนที่น่าขันสำหรับ Google บางทีพวกเขาอาจจำไม่ได้ว่า activeX และฝันร้ายทั้งหมดที่พยายามจะทำให้แอปพลิเคชันทำงานได้ในทุกสิ่งยกเว้น IE 5 หรือ IE 6 ที่น่ากลัวของวัน MS ใช้เวลาหลายปีในการฟื้นฟูจากสมัยนั้น

โผในฐานะภาษา "แนวความคิด" ดูเหมือนจะพยายามรวมคุณสมบัติ OOP ที่ดีเข้าด้วยกัน หมายเหตุประกอบ ฯลฯ เป็นความคิดที่ดีสำหรับ Javascript

ปัญหามันยากที่จะจินตนาการแบนด์วิดท์เพียงพอที่จะสร้างตัวแก้ไขใหม่ภาษาใหม่ vm ใหม่ข้ามเบราว์เซอร์ปลั๊กอินสำหรับ IDE อื่น ๆ คอมไพเลอร์เพื่อแปลงเป็นจาวาสคริปต์ (โดยไม่ต้องมีหลายเมกะไบต์) แปลงหรือสร้างห้องสมุดโผใหม่ แทนที่ห้องสมุด js นับพันในปัจจุบันให้ใครบางคนตัดสินใจโพลีเมอร์หรือคำสั่งเปลี่ยนไซต์ดาร์ทแลปให้ใช้ดาร์ทนี่คือสิ่งที่ฉันคิดได้จากส่วนหัวของฉัน

แนวคิดของการพยายามใช้ Dart ในทุกสิ่งยกเว้นแอพเล็กน้อยในเวลานี้น่ากลัว

เหนือสิ่งอื่นใดของ ES6 นี้อยู่ไม่ไกล ES6 นำคุณสมบัติมากมายที่ Dart พยายามแก้ไขที่มีอยู่ใน ES5 คุณค่าของข้อเสนอจะเป็นอย่างไรเมื่อ ES6 เข้าสู่ถนน อย่างน้อยในเวลานี้การเปลี่ยนแปลงเพียงอย่างเดียวที่คุณต้องทำใน TypeScript เมื่อ ES6 ออกมาคือการเลือกคอมไพล์เป้าหมายที่แตกต่าง

เพื่อที่จะล้างสิ่งใดแม้ว่าฉันเป็นคนที่มีความรู้ MS สร้างผลิตภัณฑ์ที่เหมาะสมและสร้างความก้าวหน้าอย่างมากในการแก้ไขข้อผิดพลาดในอดีตกับชุมชน OSS ฉันยังคงใช้สิ่งอื่นนอกเหนือจาก TypeScript จาก MS น้อยมาก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.