6 Punkte von GN⁺ 2024-05-02 | 1 Kommentare | Auf WhatsApp teilen
  • TypeSpec ist eine neue Sprache für API-zentrierte Entwicklung und wurde entwickelt, um die Anforderungen von API-Entwicklern, -Architekten und -Managern zu erfüllen.
    • Es wurde in einem Umfeld entwickelt, in dem es immer schwieriger und wichtiger wird, konsistent qualitativ hochwertige APIs und passende Erlebnisse bereitzustellen.
    • TypeSpec ist mehr als nur eine Sprache; es ist eine Plattform, die Abstraktion ermöglicht, die Wiederverwendung von Code fördert und moderne Tools für eine schnelle Entwicklung einsetzt.

Hauptmerkmale von TypeSpec

  • Interoperabilität
    • TypeSpec ist keine einfache API-Beschreibungssprache, sondern eine hochrangige Definitionssprache, mit der sich APIs definieren und gleichzeitig für verschiedene Protokolle, Clients, Server und Dokumentation ausgeben lassen.
    • Es ist mit branchenweiten API-Definitionssprachen interoperabel und überbrückt dadurch die Lücken zwischen verschiedenen Optionen.
  • Produktivität
    • TypeSpec bietet ein hervorragendes Entwicklererlebnis, das den Daten- und API-Definitionsprozess angenehmer und produktiver macht.
    • Die Sprache ist prägnant und erlaubt es, komplexe Daten- und API-Formen mit minimalem Aufwand zu definieren.
  • API-Muster
    • TypeSpec kapselt gängige Datentypen, API-Muster und Richtlinien in wiederverwendbare, hochrangige Bausteine, die team- oder Ökosystem-weit geteilt werden können, um die API-Qualität zu verbessern.
  • Vertrautheit
    • TypeSpec fühlt sich durch die Inspiration aus TypeScript und C# vielen Entwicklern vertraut an und ist leicht zu erlernen.
  • Erweiterbarkeit
    • TypeSpec kann über benutzerdefinierte Dekoratorvokabulare und Typvorlagen erweitert werden, sodass APIs in Geschäfts- oder Anwendungslogik-Domänen modelliert werden können.
  • Ökosystem
    • Mit TypeSpec lassen sich gemeinsame Typen, Sprach-Erweiterungen, Linter und Emitter als Pakete bündeln und intern in der Organisation oder im gesamten Ökosystem über npm bereitstellen.

Community und Zusammenarbeit

  • Einsatz bei Microsoft
    • Microsoft setzt TypeSpec ein, um den API-Entwicklungsprozess zu revolutionieren.
    • Viele Azure-Dienste haben TypeSpec übernommen, und deren Anzahl wächst täglich.
    • Das Microsoft-Graph-Team nutzt das Potenzial von TypeSpec, um die Produktivität zu steigern und die Anpassung zu vereinfachen.
  • Aufruf zur Teilnahme
    • TypeSpec ist mehr als eine Sprache – es ist eine Community.
    • Alle Entwickler mit unterschiedlichen Hintergründen sind eingeladen, an der offenen Beta teilzunehmen und die Stärke von TypeSpec selbst auszuprobieren.

Meinung von GN⁺

  • TypeSpec wirkt wie eine API-Definitionssprache mit hohem Abstraktionsniveau, die die Art und Weise der API-Entwicklung grundlegend verbessern könnte.
    • Der "API First"-Ansatz wird unterstützt und kann die Entwicklungseffizienz sowie die Produktqualität verbessern.
    • Durch die breite Protokollunterstützung, Erweiterbarkeit und ein starkes Ökosystem dürfte TypeSpec in vielen Entwicklungsszenarien einsetzbar sein.
  • Da die Einführung einer neuen Sprache jedoch immer mit Kosten für das Erlernen verbunden ist, sollte vor einer Team-Einführung eine ausreichende Schulung vorausgehen.
    • Es ist positiv, dass man versucht hat, die Lernkurve durch die Übernahme der Syntax von TypeScript und C# zu senken.
  • Es scheint notwendig, die Unterscheidungsmerkmale gegenüber bestehenden API-Definitionssprachen mit ähnlicher Funktion (wie Swagger, RAML, API Blueprint usw.) klarer herauszuarbeiten.
    • Beispielsweise, wie bestehende Grenzen überwunden werden und wie einfach Migrationen möglich sind.
  • Der Umstand, dass Microsoft TypeSpec intern zuerst nutzt und es durch Dogfooding weiter verbessert, wirkt vertrauenswürdig.
    • Da es erst seit kurzer Zeit als Open-Source-Projekt öffentlich verfügbar ist, werden kontinuierliche Weiterentwicklung und Community-Support in den kommenden Jahren entscheidend sein.
  • Die Richtung der Standardisierung und verbesserten Wiederverwendbarkeit in der API-Gestaltung ist richtig, zugleich entsteht der Eindruck, dass versucht wird, zu viele Probleme auf einmal zu lösen.
    • Es wäre sinnvoll, mit klaren Prioritäten schrittweise Funktionen zu verstärken.

1 Kommentare

 
GN⁺ 2024-05-02
Hacker News Kommentare
  • Wenn du TypeScript bereits für die API-Typisierung verwendest, kann ts-json-schema-generator, das direkt JSON Schema aus TypeScript erzeugt, eine Alternative sein
  • Im Vergleich zu OpenAPIs YAML sieht eigentlich alles besser aus, trotzdem gilt OpenAPI immer noch als eines der größten Fortschritte.
  • Ich hatte auf TypeScript als Durchbruchssprache für Schemas gehofft; TypeSpec wirkt so, als hätte es JavaScript entfernt und nur das Typing für JSON übriggelassen.
  • Ich habe TypeSpec für moderne APIs genutzt, um APIs wie bei GraphQL zu beschreiben und im Design-first-Modell zu entwickeln. OpenAPI-Editoren sind dabei ziemlich klobig und machen Datenbeziehungen in der API unklar, während TypeSpec sehr hilfreich war.
  • Da es von Microsoft kommt, ist es wahrscheinlich ihre Antwort auf GraphQL, und falls es intern eingesetzt wird, könnte das Tooling besser sein als das eines Open-Source-Konsortiums.
  • Es wirkt wie eine TypeScript-Version von WSDL, aber ob es länger bestehen bleibt als WSDL, ist fraglich.
  • Ein zentrales Problem ist, dass ich keine unterstützten Ausgabeformate finden konnte; außer dem Export nach OpenAPI und dem Einsatz eines miserablen Generators scheint es keine Alternative zu geben.
  • Es wäre schön, wenn man TypeSpec-Dateien in TypeScript importieren und automatisch Typen daraus ziehen könnte, aber Codegenerierung ist lästig und fehleranfällig.
  • Es wirkt wie ein Konkurrent/eine Alternative zu Smithy, und wenn jemand aus dem TypeSpec-Team hier ist, würde ich gern wissen, wie es im Vergleich abschneidet.
  • Ich frage mich, ob das als YAML in die gewünschte Toolchain überführt werden kann.
  • Es wäre schön, eine High-Level-IDL mit Schemata und Stub-Generierung für mehrere Sprachen zu haben, wie sie vor 25 Jahren durch CORBA IDL bereitgestellt wurde