TypeScriptRequestCommandsGenerator 1.1.5
See the version list below for details.
dotnet add package TypeScriptRequestCommandsGenerator --version 1.1.5
NuGet\Install-Package TypeScriptRequestCommandsGenerator -Version 1.1.5
<PackageReference Include="TypeScriptRequestCommandsGenerator" Version="1.1.5" />
<PackageVersion Include="TypeScriptRequestCommandsGenerator" Version="1.1.5" />
<PackageReference Include="TypeScriptRequestCommandsGenerator" />
paket add TypeScriptRequestCommandsGenerator --version 1.1.5
#r "nuget: TypeScriptRequestCommandsGenerator, 1.1.5"
#:package TypeScriptRequestCommandsGenerator@1.1.5
#addin nuget:?package=TypeScriptRequestCommandsGenerator&version=1.1.5
#tool nuget:?package=TypeScriptRequestCommandsGenerator&version=1.1.5
CsharpToTypeScriptConverter
Automatische Typ-Synchronisation zwischen C# Backend und TypeScript Frontend – eliminiert Fehler und Overhead.
🎯 Das echte Problem
Teams mit separaten Backend- und Frontend-Entwicklern kämpfen mit einem fundamentalen Problem:
Backend Team ändert ein DTO:
public class CreateOrderCommand
{
public int CustomerId { get; set; }
public decimal Price { get; set; }
}
↓
Frontend Team weiß nichts davon und rät:
interface CreateOrderCommand {
customerId?: string; // ← FALSCH (sollte number sein)
price?: string; // ← FALSCH (sollte number sein)
}
↓
Laufzeit-Fehler in Produktion 😱
Das Resultat:
- 2-3 Stunden Sync-Overhead pro Änderung
- 50%+ Fehlerquote bei Typ-Mismatches
- Gegenseitige Schuldzuweisungen zwischen Teams
- Backend und Frontend sind nicht synchron
✅ Die Lösung
Dieser Generator macht aus dem Backend-Code die einzige Wahrheit.
Backend Developer ändert DTO:
public class CreateOrderCommand
{
public int CustomerId { get; set; }
public decimal Price { get; set; }
}
↓ (Automatisch!)
TypeScript wird NEU GENERIERT:
export interface CreateOrderCommand {
customerId?: number; // ← AUTOMATISCH RICHTIG
price?: number; // ← AUTOMATISCH RICHTIG
}
↓
Frontend Compiler warnt sofort ✓
TypeScript hat exakte Struktur ✓
Keine Typ-Fehler mehr ✓
🚀 Features
Automatische Generierung
- C# DTOs → TypeScript Interfaces
- C# Commands → TypeScript Commands
- Rekursive Auflösung aller Abhängigkeiten
- Vollständige Typ-Korrektheit
Zwei Generierungsmodi
SeparatedFiles – Jeder Typ in eigener Datei
output/
├─ CreateOrderCommand.ts
├─ OrderItemDto.ts
├─ CustomerDto.ts
└─ index.ts (Barrel Export)
✓ Modular und skalierbar
✓ Ideal für große Projekte (200+ Typen)
✓ Mit clearDestinationFolder Flag zum automatischen Leeren
OneFile – Alle Typen in einer Datei
output/
└─ api-types.ts
✓ Schneller Überblick
✓ Ideal für Prototypen und kleine Projekte
DDD-aware
- Generiert nur API-relevante Typen (DTOs, Commands)
- Respektiert Domain Model Grenzen
- Saubere Separation zwischen intern und extern
📋 Verwendung
1. SeparatedFiles Generator
var generator = new SeparatedFilesGenerator()
.SetInterfaceFilter(typeof(IRequestCommand))
.SetReturnTypeOfCommands(typeof(Response))
.SetRequestCommandInterfaceNameForGeneratedCommands("ICommand")
.AddRangeOfCommandTypesToGenerate(commandTypes)
.AddRangeOfExtraTypesToGenerate(dtoTypes);
var metadata = generator.GenerateMetadata();
var builtFiles = metadata
.GenerateTypeScript()
.Build();
// Speichern mit automatischem Verzeichnis-Clearing
builtFiles.Save(clearDestinationFolder: true);
2. OneFile Generator
var generator = new OneFileGenerator()
.SetInterfaceFilter(typeof(IRequestCommand))
.SetReturnTypeOfCommands(typeof(Response))
.SetRequestCommandInterfaceNameForGeneratedCommands("ICommand")
.AddRangeOfCommandTypesToGenerate(commandTypes)
.AddRangeOfExtraTypesToGenerate(dtoTypes);
var metadata = generator.GenerateMetadata();
var builtFile = metadata
.GenerateTypeScript()
.Build("output/api-types.ts");
builtFile.Save();
💡 Praktische Beispiele
Szenario: Neues Feld hinzufügen
Alt (Horror):
1. Backend: Füge ShippingAddress hinzu → Push → Deploy
2. Frontend: "Warte, warum ist alles broken?" → Email → Warten
3. Frontend: Dokumentation suchen oder raten
4. Frontend: Code schreiben → Testen → Fehler → Reparieren
Zeit: 2-3 Stunden
Fehlerquote: 50%+
Neu (mit Generator):
1. Backend: Füge ShippingAddress hinzu → Push → Build
2. Build Pipeline: Generiert neue TypeScript Typen
3. Frontend: TypeScript Compiler warnt sofort "Property fehlt"
4. Frontend: Implementiert in 10 Minuten
Zeit: 10 Minuten
Fehlerquote: ~0%
Szenario: Typ-Fehler vermeiden
Backend:
public class OrderDto
{
public decimal TotalPrice { get; set; } // Dezimalzahl!
public string Status { get; set; }
}
Automatisch generiert:
export interface OrderDto {
totalPrice?: number; // Nicht string! ✓
status?: string;
}
TypeScript Compiler warnt sofort, wenn Frontend versucht price: "29.99" zu schicken. ✓
📊 Wirtschaftlicher Nutzen
Zeitersparnis
| Szenario | Alt | Mit Generator | Einsparung |
|---|---|---|---|
| Pro Änderung | 2-3 Stunden | 5 Minuten | 95% |
| Pro Woche (5 Änderungen) | 50-75 Stunden | 25 Minuten | 95% |
| Pro Monat | 200-300 Stunden | 100 Minuten | 95% |
Bug-Reduktion
| Fehlertyp | Alt | Mit Generator |
|---|---|---|
| Naming-Fehler | Häufig | Unmöglich (Reflection) |
| Typ-Fehler | Häufig | Unmöglich (Konvertierung) |
| Struktur-Fehler | Häufig | Unmöglich (Rekursion) |
| Erkennung | Laufzeit | Compile-Zeit |
Team-Zufriedenheit
- ✓ Backend Team: "Wir generieren die Typen automatisch"
- ✓ Frontend Team: "Danke, die sind immer aktuell"
- ✓ Keine gegenseitigen Blockierungen
- ✓ Fokus auf Features statt Synchronisation
🏛️ Architektur & Design
Generierungsprozess
1. Input: C# Types (DTOs, Commands)
↓
2. Reflection: Auslesen aller Properties & Typen
↓
3. Dependency Resolution: Finde alle abhängigen Typen
↓
4. Metadata Generation: Erstelle Typ-Definitionen
↓
5. TypeScript Rendering: Generiere .ts Code
↓
6. File Building: Erstelle BuildFile Objekte
↓
7. Output: Speichere in Dateien (SeparatedFiles/OneFile)
🔧 Installation & Setup
Voraussetzungen
- .NET 9+
- C# 13.0
NuGet Package
dotnet add package TypeScriptRequestCommandsGenerator
Schnelleinstieg
- Generiert Typen definieren:
var commands = assembly.GetTypes()
.Where(t => typeof(IRequestCommand).IsAssignableFrom(t));
var dtos = assembly.GetTypes()
.Where(t => t.Name.EndsWith("Dto"));
- Generator konfigurieren:
var generator = new SeparatedFilesGenerator()
.SetInterfaceFilter(typeof(IRequestCommand))
.SetReturnTypeOfCommands(typeof(ApiResponse))
.AddRangeOfCommandTypesToGenerate(commands)
.AddRangeOfExtraTypesToGenerate(dtos);
- Generieren & speichern:
generator.GenerateMetadata()
.GenerateTypeScript()
.Build()
.Save(clearDestinationFolder: true);
- In CI/CD integrieren: Füge einen Build-Step hinzu, der den Generator nach Backend-Änderungen aufruft.
📁 Projektstruktur
CsharpToTypeScriptConverter/
├─ src/
│ ├─ CsharpToTypeScriptConverter.Generator/
│ │ ├─ Generators/ # Generator-Logik (SeparatedFiles, OneFile)
│ │ ├─ Models/ # BuildFile, GeneratorType, etc.
│ │ ├─ Templates/ # TypeScript Template Engine
│ │ └─ Tools/ # TypeFileGenerator, TypeResolver, etc.
│ └─ CsharpToTypeScriptConverter.Tests/
│ └─ ... # Unit & Integration Tests
└─ README.md # Diese Datei
🧪 Tests
dotnet test src/CsharpToTypeScriptConverter.Tests/CsharpToTypeScriptConverter.Tests.csproj
Tests überprüfen:
- ✓ Korrekte TypeScript Generierung
- ✓ Dependency Resolution
- ✓ Datei-Strukturen (Separated vs OneFile)
- ✓ Spezielle Typen (Enums, Interfaces, etc.)
🎓 Für wen ist das?
✓ Kleine Teams (2-3 Devs)
Auch bei guter Kommunikation: Versicherung gegen menschliche Fehler.
✓ Wachsende Teams (5-10+ Devs)
Essentiell! Manuelle Synchronisation wird unmöglich.
✓ Große Projekte (200+ Typen)
Unverzichtbar! Ohne Generator: Chaos garantiert.
✓ Agile Entwicklung
Häufige Änderungen? Generator spart Stunden jede Woche.
❓ FAQ
"Aber wir nutzen Swagger/OpenAPI?"
Unterschied:
- Swagger dokumentiert HTTP-Schnittstellen (was du schicken kannst)
- Dieser Generator generiert exakte TypeScript Typen (wie die Struktur aussieht)
Beide können zusammen verwendet werden!
"Wir haben noch nie Probleme mit Typ-Sync?"
Dann seid ihr wahrscheinlich:
- Sehr klein (< 3 Devs)
- Sehr gut organisiert
- Sehr viel Glück gehabt
Trotzdem: Generator würde euch 10+ Stunden/Monat sparen.
"Ist das nicht overkill?"
Nein. Mit 200+ Typen und 5+ Änderungen/Woche sind 10-20 Stunden Sync-Overhead normal. Generator spart das komplett.
"Können wir das in unsere CI/CD integrieren?"
Ja! Perfekt für:
- Post-Build Hook
- PR-Validierung
- Auto-Commit der generierten Typen
📝 Lizenz
Siehe LICENSE Datei.
🤝 Contributing
Contributions sind willkommen! Bitte erstelle einen Pull Request oder öffne ein Issue.
🎯 Zusammenfassung
CsharpToTypeScriptConverter löst ein echtes Problem:
Statt Stunden mit manueller Typ-Synchronisation zu verschwenden, konzentrieren sich Teams auf das was zählt: Features entwickeln.
Der Generator macht aus dem Backend-Code die einzige Wahrheit. Das Resultat:
- ✅ Keine Typ-Fehler
- ✅ 95% weniger Sync-Overhead
- ✅ Keine Blockierungen zwischen Teams
- ✅ Glücklichere, produktivere Teams
Das ist kein Nice-to-Have. Das ist eine Versicherung gegen menschliche Fehler.
Ready to sync your types automatically? 🚀
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net9.0
- Microsoft.CodeAnalysis (>= 4.14.0)
- Microsoft.CodeAnalysis.Common (>= 4.14.0)
- Microsoft.CodeAnalysis.CSharp (>= 4.14.0)
- System.CodeDom (>= 9.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.1.8 | 129 | 1/15/2026 |
| 1.1.7 | 95 | 1/12/2026 |
| 1.1.6 | 93 | 1/8/2026 |
| 1.1.5 | 88 | 1/8/2026 |
| 1.1.4 | 86 | 1/8/2026 |
| 1.1.3 | 90 | 1/8/2026 |
| 1.1.2 | 89 | 1/8/2026 |
| 1.1.1 | 88 | 1/7/2026 |
| 1.1.0 | 85 | 1/7/2026 |
| 1.0.0 | 85 | 1/6/2026 |
| 0.9.49 | 87 | 1/5/2026 |
| 0.9.48 | 90 | 1/5/2026 |
| 0.9.47 | 86 | 1/5/2026 |
| 0.9.46 | 87 | 1/4/2026 |
| 0.9.45 | 87 | 1/4/2026 |
| 0.9.44 | 90 | 1/3/2026 |
| 0.9.43 | 89 | 1/2/2026 |
| 0.9.42 | 93 | 1/2/2026 |
| 0.9.41 | 88 | 1/2/2026 |
| 0.9.4 | 87 | 1/2/2026 |