Warum TypeScript für FiveM?
TypeScript bringt statische Typprüfung, moderne JavaScript-Funktionen und überlegene IDE-Unterstützung für die FiveM-Entwicklung. Während Lua die Standard-Skriptsprache bleibt, läuft TypeScript, kompiliert zu JavaScript, nativ in FiveM über die JavaScript-Laufzeitumgebung. Die Typsicherheit fängt beim Kompilieren Fehler ab, die andernfalls zur Laufzeit zum Absturz deines Servers führen würden, die automatische Vervollständigung beschleunigt die Entwicklung erheblich und Schnittstellen sorgen dafür, dass sich dein Code selbst dokumentiert. Bei komplexen Projekten mit mehreren Entwicklern reduziert TypeScript den Koordinationsaufwand und macht Refactoring sicherer.
Projekt-Setup mit fivem-ts-boilerplate
Der schnellste Weg, ein TypeScript FiveM-Projekt zu starten, ist die Verwendung der Community FiveM-ts-boilerplate. Klone das Vorlagen-Repository, führe npm install aus, um Abhängigkeiten einzurichten, und schon hast du eine gebrauchsfertige Projektstruktur mit separaten Client-, Server- und freigegebenen Quellverzeichnissen. Das Boilerplate umfasst eine Webpack-Konfiguration, die mit FiveM kompatible TypeScript- bis Erstelle dein Projekt mit npm run build und die Ausgabe geht direkt in einen Ressourcenordner.
Typdefinitionen und Natives
Die Typpakete @citizenfx/client und @citizenfx/server stellen TypeScript-Definitionen für alle nativen FiveM-Funktionen und API-Aufrufe bereit. Diese Definitionen ermöglichen die automatische Vervollständigung für Funktionen wie GetEntityCoords, SetEntityHealth und RegisterCommand und zeigen Ihnen beim Codieren Parametertypen und Rückgabewerte an. Für Framework-spezifische APIs wie QBCore oder ESX kannst du zusätzliche Typdefinitionsdateien erstellen oder installieren, die die Framework-Exporte und -Ereignisse abdecken. Dadurch wird deine IDE zu einem interaktiven Dokumentationsbrowser für die gesamte FiveM-API.
Client- und Serverarchitektur
Strukturiere dein TypeScript-Projekt mit klarer Trennung zwischen Client- und Servercode. Verwende das freigegebene Verzeichnis für Schnittstellen, Aufzählungen und Dienstprogrammfunktionen, die beide Seiten benötigen. Definiere Ereignisnutzlastschnittstellen in gemeinsam genutzten Typen, damit der Compiler überprüft, ob Client und Server sich über Datenformen einig sind. Importiere Framework-Wrapper aus einer Serviceschicht, die das zugrunde liegende Framework abstrahiert und deine Geschäftslogik auf QBCore-, ESX- und Standalone-Setups portierbar macht. Diese Architektur macht deine Codebasis modular und testbar.
Debuggen von TypeScript in FiveM
Das Debuggen von kompiliertem Code kann eine Herausforderung sein, da sich der ausgeführte JavaScript von deiner TypeScript-Quelle unterscheidet. Aktiviere Quellzuordnungen in deiner Webpack-Konfiguration, damit Fehler-Stack-Traces auf deine ursprünglichen TypeScript-Dateien verweisen. Verwende console.log-Anweisungen, die zum serverseitigen Debuggen an die FiveM-Serverkonsole weitergeleitet werden. Für das clientseitige Debuggen können die über F8 zugänglichen NUI-Entwicklertools die JavaScript-Ausführung überprüfen. Erwäge das Hinzufügen eines strukturierten Protokollierungsdienstprogramms, das Zeitstempel, Protokollebenen und Quelldateiverweise enthält, um die Nachverfolgung von Problemen anhand der kompilierten Ausgabe zu erleichtern.
Migration und Koexistenz mit Lua
Du musst nicht deinen gesamten Server auf einmal auf TypeScript umstellen. TypeScript-Ressourcen koexistieren perfekt mit Lua-Ressourcen, da sie über dasselbe Ereignis- und Exportsystem kommunizieren. Erstelle zunächst neue Funktionen in TypeScript und behaltest du gleichzeitig die vorhandenen Lua-Scripts bei. Erstelle beim Aufrufen von Lua-Exporten aus TypeScript Typdeklarationen, die die erwarteten Funktionssignaturen beschreiben. Migriere kritische Systeme schrittweise, während du mit dem TypeScript-Workflow vertrauter werden. Dieser inkrementelle Ansatz ermöglicht deinem Team, TypeScript zu erlernen, während der Server stabil bleibt und ein riskantes vollständiges Neuschreiben vermieden wird.
Zusammenfassung
Agency Scripts baut seine gesamte Produktlinie nach denselben Grundprinzipien: Framework-agnostische Architektur, schlanke Performance-Eigenschaften, klar dokumentierte Konfiguration und eine API, die echte Composability zwischen den Scripts ermöglicht. Kein Script ist eine Insel — jedes ist so gebaut, dass es gut allein und noch besser als Teil des Ökosystems funktioniert.
Für Fragen zur Installation, Konfiguration oder Kompatibilität ist der Agency Scripts Discord der schnellste Weg zur Hilfe. Die Community dort ist aktiv und hilfsbereit, und das Core-Team ist regelmäßig präsent. Für kritische Probleme steht auch ein direktes Support-Ticket-System auf der Tebex-Produktseite zur Verfügung.
Updates für alle Agency-Scripts werden über Tebex-Benachrichtigungen kommuniziert. Active-Business-Abonnenten erhalten neue Scripts automatisch ohne zusätzlichen Kauf. Changelog-Details erscheinen im #changelog-Kanal des Discords, damit du Updates bewerten kannst, bevor du sie auf einem Produktionsserver installierst.
