6 คะแนน โดย GN⁺ 2024-05-02 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • TypeSpec เป็นภาษาใหม่สำหรับการพัฒนาแบบเน้น API ซึ่งออกแบบมาเพื่อรองรับความต้องการของนักพัฒนา API, นักออกแบบ และผู้จัดการ API
    • พัฒนาขึ้นในบริบทที่การมอบ API และประสบการณ์ที่เกี่ยวข้องที่มีคุณภาพสูงอย่างสม่ำเสมอยิ่งซับซ้อนมากขึ้นและมีความสำคัญมากขึ้น
    • TypeSpec ไม่ได้เป็นเพียงภาษา แต่เป็นแพลตฟอร์มที่ทำให้เกิดการนามธรรม ส่งเสริมการนำโค้ดกลับมาใช้ใหม่ และใช้เครื่องมือที่ทันสมัยเพื่อการพัฒนาที่รวดเร็ว

คุณสมบัติหลักของ TypeSpec

  • ความเข้ากันได้
    • TypeSpec ไม่ได้เป็นแค่ภาษาอธิบาย API แบบง่าย ๆ แต่เป็นภาษาระดับสูงสำหรับการกำหนด API ที่สามารถสร้างผลลัพธ์ได้พร้อมกัน ทั้งโปรโตคอล, ไคลเอนต์, เซิร์ฟเวอร์ และเอกสาร
    • เข้ากันได้กับภาษาคำจำกัดความ API มาตรฐานของอุตสาหกรรม ช่วยลดช่องว่างระหว่างทางเลือกต่าง ๆ
  • ผลิตภาพ
    • TypeSpec มอบประสบการณ์นักพัฒนาที่ดีเยี่ยม ช่วยให้กระบวนการนิยามข้อมูลและ API มีความราบรื่นและมีประสิทธิภาพมากขึ้น
    • ภาษาออกแบบให้กระชับ ทำให้สามารถนิยามข้อมูลที่ซับซ้อนและรูปแบบ API ด้วยการป้อนข้อมูลน้อยที่สุดได้
  • รูปแบบ API
    • TypeSpec ช่วยยกระดับคุณภาพ API โดยบรรจุชนิดข้อมูลทั่วไป รูปแบบ API และแนวทางที่เป็นมาตรฐานเป็นองค์ประกอบที่นำกลับมาใช้ใหม่ได้ระดับสูง เพื่อแชร์ทั้งในทีมและระบบนิเวศทั้งหมด
  • ความคุ้นเคย
    • TypeSpec ได้รับแรงบันดาลใจจาก TypeScript และ C# จึงเรียนรู้ได้ง่ายและคุ้นเคยกับนักพัฒนาจำนวนมาก
  • ความยืดหยุ่น
    • TypeSpec สามารถขยายด้วยคำศัพท์ decorator และ type template ที่กำหนดเอง เพื่อจำลอง API ในโดเมนตรรกะทางธุรกิจหรือแอปพลิเคชันได้
  • ระบบนิเวศ
    • ด้วย TypeSpec คุณสามารถรวบรวม common types, การขยายภาษา, linter และ emitter เป็นแพ็กเกจ แล้วเผยแพร่บน NPM ให้ใช้ภายในองค์กรหรือระบบนิเวศทั้งหมด

ชุมชนและความร่วมมือ

  • การใช้งานของ Microsoft
    • Microsoft กำลังใช้ TypeSpec เพื่อสร้างการเปลี่ยนแปลงกระบวนการพัฒนา API
    • หลายบริการของ Azure ได้รับการนำ TypeSpec มาใช้งาน และจำนวนการใช้งานเพิ่มขึ้นทุกวัน
    • ทีม Microsoft Graph ใช้ศักยภาพของ TypeSpec เพื่อเพิ่มประสิทธิภาพการทำงานและทำให้การปรับแต่งง่ายขึ้น
  • คำเชิญให้เข้าร่วม
    • TypeSpec ไม่ได้เป็นแค่ภาษา แต่มันคือชุมชน
    • เชิญนักพัฒนาทุกระดับเข้าร่วม public beta เพื่อสัมผัสพลังของ TypeSpec ด้วยตัวเอง

ความคิดเห็นของ GN⁺

  • TypeSpec เป็นภาษานิยาม API ที่มีระดับนามธรรมสูง จึงมีแนวโน้มที่จะพัฒนาวิธีการพัฒนา API อย่างก้าวกระโดด
    • การรองรับแนวทาง "API First" จะช่วยเพิ่มประสิทธิภาพการพัฒนาและยกระดับคุณภาพของผลิตภัณฑ์สุดท้าย
    • ด้วยการรองรับโปรโตคอลหลากหลาย ความยืดหยุ่น และระบบนิเวศที่แข็งแกร่ง คาดว่าจะนำไปใช้ได้ในสถานการณ์การพัฒนาที่หลากหลาย
  • อย่างไรก็ตาม การนำภาษาใหม่มาใช้ย่อมมีต้นทุนด้านการเรียนรู้ จึงควรมีการอบรมให้เพียงพอก่อนการนำ TypeSpec มาใช้ในทีม
    • การยืมไวยากรณ์จาก TypeScript และ C# เพื่อลดความชันของเส้นการเรียนรู้ถือเป็นความพยายามที่ดี
  • ควรชี้ความแตกต่างจากภาษาเดิมที่มีบทบาทใกล้เคียงกัน เช่น Swagger, RAML, API Blueprint ให้ชัดเจนมากขึ้น
    • เช่น วิธีที่ช่วยข้ามข้อจำกัดของภาษาที่มีอยู่เดิม และความง่ายในการย้ายระบบ
  • แนวทาง dogfooding ที่ Microsoft นำมาใช้ภายในก่อนเป็นการใช้งานจริงนอกโลก ทำให้เกิดความเชื่อมั่น
    • อย่างไรก็ตาม โครงการโอเพ่นซอร์สยังเผยแพร่สู่สาธารณะไม่นาน จึงคาดว่าการพัฒนาอย่างต่อเนื่องและการสนับสนุนจากชุมชนในอีกหลายปีข้างหน้าจะเป็นกุญแจสำคัญ
  • การเน้นมาตรฐานการออกแบบ API และการเพิ่มความสามารถในการนำกลับมาใช้ใหม่เป็นทิศทางที่ถูกต้อง แม้จะรู้สึกว่าพยายามแก้ไขหลายประเด็นพร้อมกันเกินไป
    • ควรกำหนดลำดับความสำคัญและค่อย ๆ เสริมความสามารถเพิ่มเติมเป็นลำดับขั้น

1 ความคิดเห็น

 
GN⁺ 2024-05-02
ความคิดเห็นจาก Hacker News
  • หากคุณใช้ TypeScript อยู่แล้วเพื่อกำหนดชนิดข้อมูล API แล้ว ts-json-schema-generator ซึ่งสร้าง JSON Schema โดยตรงจาก TypeScript อาจเป็นทางเลือกหนึ่ง
  • เมื่อเทียบกับ YAML ของ OpenAPI แล้ว แม้สิ่งใดก็อาจดูดีกว่า แต่ OpenAPI ก็ยังถูกมองว่าเป็นหนึ่งในการพัฒนาที่ยอดเยี่ยมที่สุด
  • เราเคยหวังว่า TypeScript จะเป็นจุดเปลี่ยนให้เป็นภาษาสคีมาได้ แต่ TypeSpec ดูเหมือนจะตัด JavaScript ออก เหลือแค่การกำหนดชนิดสำหรับ JSON
  • ในการใช้ TypeSpec กับ API รุ่นใหม่เพื่ออธิบาย API และพัฒนาแบบ design-first คล้ายกับ GraphQL ผมพบว่าเครื่องมือแก้ไข OpenAPI ค่อนข้างหยาบและทำให้ความสัมพันธ์ข้อมูลภายใน API ไม่ชัดเจน ในขณะที่ TypeSpec ช่วยมาก
  • เพราะผลิตโดย Microsoft จึงอาจเป็นคำตอบของพวกเขาต่อ GraphQL และถ้าถูกนำมาใช้ภายในองค์กร เครื่องมืออาจดีไม่แพ้โครงการที่ทำโดยคอนซอร์เทียมโอเพ่นซอร์ส
  • ดูเหมือนจะเป็น TypeScript เวอร์ชันของ WSDL แต่ไม่รู้ว่าจะคงอยู่ยาวนานกว่า WSDL หรือไม่
  • ข้อสงสัยหลักที่ยังตามหาไม่เจอคือภาษาที่รองรับสำหรับ output; เห็นแล้วเหมือนว่าไม่เหลือทางเลือกอื่นนอกจากส่งออกเป็น OpenAPI แล้วใช้ตัวสร้างโค้ดที่ทำงานได้แย่
  • คงยอดเยี่ยมมากหากนำไฟล์ TypeSpec เข้าสู่ TypeScript เพื่อรับ type โดยอัตโนมัติ แต่การสร้างโค้ดยังคงยุ่งยากและเกิดข้อผิดพลาดง่าย
  • มันดูเหมือนผู้แข่งขัน/ทางเลือกของ Smithy และหากมีใครสักคนจากทีม TypeSpec อยู่ที่นี่ก็คงอยากได้ความคิดเห็นเกี่ยวกับการเปรียบเทียบ
  • อยากรู้ว่ามันสามารถแปลงเป็น YAML สำหรับ pipeline ที่ต้องการได้หรือไม่
  • คงดีมากถ้ามี IDL ระดับสูงที่ให้ออกแบบสคีมาและสร้าง stub สำหรับหลายภาษา เหมือนที่ CORBA IDL เคยให้มานานถึง 25 ปีแล้ว