6 points par GN⁺ 2024-05-02 | 1 commentaires | Partager sur WhatsApp
  • TypeSpec est un nouveau langage pour le développement centré sur les API, conçu pour répondre aux besoins des développeurs, des concepteurs et des responsables d’API
    • Conçu dans un contexte où fournir des API de qualité constante et des expériences associées devient de plus en plus complexe et important
    • TypeSpec est plus qu’un simple langage : c’est une plateforme qui permet l’abstraction, encourage la réutilisation du code et s’appuie sur des outils modernes pour un développement rapide

Principales caractéristiques de TypeSpec

  • Interopérabilité
    • TypeSpec n’est pas un simple langage de description d’API, mais un langage de définition de haut niveau pour définir des API et générer simultanément divers protocoles, clients, serveurs, documentation, etc.
    • Il est interopérable avec les langages de définition d’API standards de l’industrie, ce qui réduit les écarts entre les différentes options
  • Productivité
    • TypeSpec offre une excellente expérience développeur pour rendre le travail sur les données et la définition d’API plus fluide et productif
    • Le langage est concis et permet de définir des formes de données et d’API complexes avec un minimum d’entrées
  • Modèles d’API
    • TypeSpec encapsule les types de données courants, les patterns d’API et les directives dans des composants réutilisables de haut niveau partageables à l’échelle d’une équipe ou d’un écosystème, améliorant ainsi la qualité des API
  • Familiarité
    • TypeSpec s’inspire de TypeScript et C# pour être facile à apprendre et familier à de nombreux développeurs
  • Extensibilité
    • TypeSpec peut être étendu grâce à un vocabulaire de décorateurs personnalisés et à des templates de type, permettant de modéliser des API dans des domaines de logique métier ou applicative
  • Écosystème
    • Avec TypeSpec, il est possible d’emballer des types communs, des extensions de langage, des linters et des émetteurs dans des packages à distribuer sur npm au sein d’une organisation ou d’un écosystème

Communauté et collaboration

  • Utilisé chez Microsoft
    • Microsoft utilise TypeSpec pour transformer son processus de développement d’API
    • Beaucoup de services Azure l’adoptent, et leur nombre augmente chaque jour
    • L’équipe Microsoft Graph s’appuie sur le potentiel de TypeSpec pour augmenter la productivité et simplifier la personnalisation
  • Appel à participation
    • TypeSpec est plus qu’un simple langage : c’est une communauté
    • Tous les profils de développeurs sont invités à participer à la bêta publique afin de constater eux-mêmes la puissance de TypeSpec

Avis de GN⁺

  • TypeSpec apparaît comme un langage de définition d’API à haut niveau d’abstraction, pouvant améliorer de manière révolutionnaire la manière de développer des API
    • En prenant en charge l’approche « API First », il devrait aider à améliorer l’efficacité du développement et la qualité du produit final
    • Grâce à sa prise en charge de nombreux protocoles, à son extensibilité et à son écosystème solide, il devrait être applicable à un large éventail de scénarios de développement
  • Toutefois, l’introduction d’un nouveau langage entraîne toujours des coûts d’apprentissage, donc une formation suffisante devrait précéder son adoption en interne
    • Le choix de s’inspirer de la syntaxe de TypeScript et de C# pour réduire la courbe d’apprentissage est positif
  • Les points de différenciation avec les langages de définition d’API existants (Swagger, RAML, API Blueprint, etc.) qui remplissent un rôle similaire gagneraient à être clarifiés davantage
    • Il serait utile de préciser comment il surmonte les limites des langages existants, la facilité de migration, etc.
  • La stratégie de dogfooding menée en premier au sein de Microsoft inspire confiance
    • Mais comme le projet n’a été publié en open source que récemment, son évolution continue et le support communautaire seront décisifs dans les prochaines années
  • La direction visant à améliorer la standardisation et la réutilisabilité de la conception d’API est pertinente, mais donne aussi l’impression de vouloir résoudre trop de choses à la fois
    • Il serait préférable de renforcer progressivement les fonctionnalités par priorisation

1 commentaires

 
GN⁺ 2024-05-02
Commentaires Hacker News
  • Si vous utilisez déjà TypeScript pour le typage d'API, ts-json-schema-generator, qui génère directement des schémas JSON depuis TypeScript, peut être une alternative.
  • À comparer au YAML d’OpenAPI, ça peut sembler mieux, mais OpenAPI reste quand même l’une des meilleures évolutions.
  • On attendait de TypeScript une percée en tant que langage de schéma, mais TypeSpec semble avoir supprimé JavaScript et n’avoir laissé que du typage pour le JSON.
  • J’ai utilisé TypeSpec sur des API récentes pour décrire une API et concevoir de manière design-first, un peu comme GraphQL ; les éditeurs OpenAPI sont trop brutaux et rendent les relations de données dans l’API ambiguës, alors que TypeSpec a été d’une grande aide.
  • Comme il est fait par Microsoft, il est probable que ce soit leur réponse à GraphQL. S’il est utilisé en interne, les outils peuvent être corrects par rapport à ce qu’un consortium open source pourrait fournir.
  • Ça ressemble à une version TypeScript de WSDL, mais on ne sait pas s’il durera plus longtemps que WSDL.
  • Le point majeur est que je n’ai pas trouvé les langages de sortie pris en charge : en dehors d’exporter vers OpenAPI, il semble qu’il n’y ait pas d’autre solution que d’utiliser un générateur d’une piètre qualité.
  • Ce serait pratique d’importer un fichier TypeSpec en TypeScript et d’obtenir automatiquement les types, mais la génération de code est fastidieuse et sujette aux erreurs.
  • Il semble être un concurrent/alternative à Smithy, et si quelqu’un de l’équipe TypeSpec est là, j’aimerais savoir ce que vous en pensez.
  • Je me demande si le YAML peut être transformé dans la chaîne d’outils de son choix.
  • Ce serait bien d’avoir un IDL de haut niveau qui, comme le CORBA IDL d’il y a 25 ans, fournit un schéma et la génération de stubs pour plusieurs langages.