6 điểm bởi GN⁺ 2024-05-02 | 1 bình luận | Chia sẻ qua WhatsApp
  • TypeSpec là ngôn ngữ mới cho phát triển API, được thiết kế để đáp ứng nhu cầu của các nhà phát triển, nhà thiết kế và nhà quản lý API
    • Được xây dựng trong bối cảnh việc cung cấp API chất lượng cao và trải nghiệm liên quan một cách nhất quán ngày càng phức tạp hơn nhưng cũng ngày càng quan trọng
    • TypeSpec không chỉ là một ngôn ngữ; nó là một nền tảng cho phép trừu tượng hóa, khuyến khích tái sử dụng mã và tận dụng các công cụ hiện đại cho phát triển nhanh

Đặc điểm nổi bật của TypeSpec

  • Khả năng tương tác
    • TypeSpec không phải là ngôn ngữ mô tả API đơn thuần mà là ngôn ngữ định nghĩa cấp cao có thể đồng thời xuất ra API, nhiều giao thức, client, server và tài liệu
    • Tương thích với các ngôn ngữ định nghĩa API chuẩn của ngành, giúp thu hẹp khoảng cách giữa các lựa chọn
  • Năng suất
    • TypeSpec mang đến trải nghiệm nhà phát triển giúp quá trình định nghĩa dữ liệu và API trở nên thú vị và hiệu quả hơn
    • Ngôn ngữ ngắn gọn và có thể định nghĩa dữ liệu và cấu trúc API phức tạp với ít dữ liệu đầu vào nhất
  • Mẫu API
    • TypeSpec nâng cao chất lượng API bằng cách đóng gói các loại dữ liệu phổ biến, mẫu API và hướng dẫn thành các thành phần có thể tái sử dụng ở cấp cao, dùng chung cho cả nhóm hoặc toàn hệ sinh thái
  • Tính quen thuộc
    • TypeSpec lấy cảm hứng từ TypeScript và C#, nên dễ học và dễ gây quen thuộc cho nhiều nhà phát triển
  • Khả năng mở rộng
    • TypeSpec có thể mở rộng bằng từ vựng decorator tùy chỉnh và mẫu kiểu, giúp mô hình hóa API trong miền logic nghiệp vụ hoặc logic ứng dụng
  • Hệ sinh thái
    • Khi sử dụng TypeSpec, bạn có thể đóng gói các kiểu dùng chung, phần mở rộng ngôn ngữ, linter và emitter rồi phát hành lên NPM trên toàn tổ chức hoặc toàn hệ sinh thái

Cộng đồng và hợp tác

  • Đang được Microsoft sử dụng
    • Microsoft đang đổi mới quy trình phát triển API bằng TypeSpec
    • Nhiều dịch vụ Azure đã áp dụng TypeSpec và số lượng này đang tăng lên mỗi ngày
    • Nhóm Microsoft Graph đang tận dụng tiềm năng của TypeSpec để nâng cao năng suất và đơn giản hóa tùy chỉnh
  • Mời tham gia
    • TypeSpec không chỉ là một ngôn ngữ; nó là cộng đồng
    • Mọi nhà phát triển từ mọi nền tảng đều được mời tham gia bản beta công khai để trực tiếp trải nghiệm sức mạnh của TypeSpec

Ý kiến của GN⁺

  • TypeSpec là ngôn ngữ định nghĩa API có mức trừu tượng cao, dường như có thể cải thiện theo hướng đột phá cách phát triển API
    • Hỗ trợ tiếp cận "API First" nên có thể giúp nâng cao hiệu quả phát triển và chất lượng sản phẩm đầu ra
    • Với việc hỗ trợ nhiều giao thức, tính mở rộng và hệ sinh thái mạnh mẽ, sản phẩm dự kiến sẽ phù hợp cho nhiều kịch bản phát triển
  • Tuy nhiên, việc áp dụng ngôn ngữ mới luôn phát sinh chi phí học tập, nên cần có đào tạo đầy đủ trước khi triển khai trong team
    • Việc mượn cú pháp TypeScript và C# để hạ thấp độ dốc học tập là điểm tích cực
  • Cần làm rõ hơn điểm khác biệt với các ngôn ngữ định nghĩa API cùng vai trò trước đây như Swagger, RAML, API Blueprint, v.v.
    • cách nó vượt qua các hạn chế của ngôn ngữ hiện có, mức độ dễ dàng khi di chuyển (migration), v.v.
  • Cách Microsoft trước tiên dùng nội bộ rồi liên tục cải tiến theo hướng dogfooding tạo cảm giác tin cậy
    • Tuy nhiên, vì đây mới là dự án mã nguồn mở công bố chưa lâu, nên trong vài năm tới sự phát triển liên tục và hỗ trợ cộng đồng sẽ là yếu tố then chốt
  • Mục tiêu chuẩn hóa thiết kế API và nâng cao tính tái sử dụng là đúng đắn, nhưng cũng có cảm giác rằng quá nhiều vấn đề đang được giải quyết cùng lúc
    • Nên tăng cường và mở rộng các tính năng theo từng giai đoạn

1 bình luận

 
GN⁺ 2024-05-02
Ý kiến trên Hacker News
  • Nếu bạn đã đã dùng TypeScript để định nghĩa kiểu cho API, thì ts-json-schema-generator có thể là lựa chọn thay thế vì tạo JSON Schema trực tiếp từ TypeScript
  • So với YAML của OpenAPI thì có vẻ thứ gì cũng tốt hơn, nhưng vẫn có thể xem OpenAPI là một trong những bước tiến xuất sắc nhất
  • Đã từng mong chờ TypeScript sẽ mở đường trở thành ngôn ngữ schema, nhưng TypeSpec có vẻ chỉ gạt bỏ JavaScript và chỉ giữ lại typing dành cho JSON
  • Khi áp dụng TypeSpec cho API mới nhất, tôi thấy một công cụ mô tả API theo kiểu GraphQL và phát triển theo hướng design-first; trong khi các trình chỉnh sửa OpenAPI quá cứng nhắc và làm mối quan hệ dữ liệu trong API trở nên mơ hồ, TypeSpec lại rất hữu ích
  • Vì sản phẩm này do Microsoft làm nên có thể được xem là câu trả lời của họ với GraphQL, và nếu được sử dụng nội bộ thì có thể công cụ này tốt hơn so với sản phẩm do một consortium mã nguồn mở xây dựng
  • Trông giống phiên bản TypeScript của WSDL, nhưng không biết liệu nó có tồn tại lâu hơn WSDL hay không
  • Tôi chưa tìm thấy điểm nghi ngờ lớn nhất là các ngôn ngữ đầu ra được hỗ trợ, và dường như không có cách nào ngoài xuất sang OpenAPI rồi dùng bộ sinh code quá tệ
  • Sẽ rất tốt nếu có thể import file TypeSpec vào TypeScript để tự động lấy kiểu, nhưng việc sinh code khá rườm rà và dễ gây lỗi
  • Trông như là đối thủ/phiên bản thay thế của Smithy, và nếu có ai đó trong team TypeSpec ở đây, tôi muốn nghe ý kiến về cách nó so sánh
  • Tò mò không biết có thể chuyển YAML sang chuỗi công cụ mong muốn hay không
  • Sẽ rất vui nếu có một IDL cấp cao cung cấp schema và tạo stub cho nhiều ngôn ngữ, giống như CORBA IDL đã từng cung cấp 25 năm trước