Freigeben über


Roadmap für JavaScript- und TypeScript-Entwickler, die C# lernen

C#, TypeScript und JavaScript gehören alle zur C-Sprachfamilie. Die Ähnlichkeiten zwischen den Sprachen helfen Ihnen, schnell produktiv in C# zu werden.

  1. Ähnliche Syntax: JavaScript, TypeScript und C# gehören zur C-Sprachfamilie. Diese Ähnlichkeit bedeutet, dass Sie C# bereits lesen und verstehen können. Es gibt einige Unterschiede, aber ein Großteil der Syntax ist identisch mit JavaScript und C. Die geschweiften Klammern und Semikolons sind Ihnen bereits bekannt. Steuerelementanweisungen wie if, else und switch sind identisch. Die Schleifenanweisungen for, while, und do...while sind ebenfalls identisch. In C# und TypeScript sind dieselben Schlüsselwörter für class und interface verfügbar. Die Zugriffsmodifizierer von public zu private sind in TypeScript und C# identisch.
  2. Das =>-Token: Alle Sprachen unterstützen einfache Funktionsdefinitionen. In C# werden sie als Lambdaausdrücke bezeichnet, in JavaScript hingegen Pfeilfunktionen.
  3. Funktionshierarchien: Alle drei Sprachen unterstützen lokale Funktionen, bei denen es sich um Funktionen handelt, die in anderen Funktionen definiert sind.
  4. „async“ und „await“: Alle drei Sprachen verwenden dieselben async- und await-Schlüsselwörter für die asynchrone Programmierung.
  5. Garbage Collection: Alle drei Sprachen verwenden einen Garbage Collector für die automatische Arbeitsspeicherverwaltung.
  6. Ereignismodell: Die event-Syntax in C# ähnelt dem JavaScript-Modell für Dokumentobjektmodell-Ereignisse (Document Object Model, DOM).
  7. Paket-Manager: NuGet ist der am häufigsten verwendete Paket-Manager für C# und .NET (ähnlich wie npm für JavaScript-Anwendungen). C#-Bibliotheken werden in Assemblys bereitgestellt.

Wenn Sie sich weiter mit C# beschäftigen, lernen Sie Konzepte kennen, die nicht Teil von JavaScript sind. Einige dieser Konzepte sind Ihnen möglicherweise vertraut, wenn Sie TypeScript verwenden:

  1. C#-Typsystem: C# ist eine stark typisierte Sprache. Jede Variable hat einen Typ, und dieser Typ kann nicht geändert werden. Sie definieren class- oder struct-Typen. Sie können interface-Definitionen definieren, die das von anderen Typen implementierte Verhalten definieren. TypeScript enthält viele dieser Konzepte, aber da TypeScript auf JavaScript basiert, ist das Typsystem nicht so streng.
  2. Musterabgleich: Der Musterabgleich ermöglicht präzise bedingte Anweisungen und Ausdrücke basierend auf der Form komplexer Datenstrukturen. Der is-Ausdruck überprüft, ob eine Variable einem bestimmten Muster entspricht. Der musterbasierte switch-Ausdruck bietet eine umfangreiche Syntax, um eine Variable zu prüfen und Entscheidungen basierend auf ihren Merkmalen zu treffen.
  3. Zeichenfolgeninterpolation und Rohzeichenfolgenliterale: Mit der Zeichenfolgeninterpolation können Sie ausgewertete Ausdrücke in eine Zeichenfolge einfügen, anstatt Positionsbezeichner zu verwenden. Rohzeichenfolgenliterale bieten eine Möglichkeit, Escapesequenzen im Text zu minimieren.
  4. Nullable- und Non-Nullable-Typen: C# unterstützt Nullable-Werttypen und Nullable-Verweistypen, indem das ?-Suffix an einen Typ angefügt wird. Bei Nullable-Typen werden Sie vom Compiler gewarnt, wenn Sie den Code nicht auf null überprüfen, bevor Sie den Ausdruck dereferenzieren. Bei Non-Nullable-Typen werden Sie vom Compiler gewarnt, wenn Sie dieser Variablen möglicherweise einen null-Wert zuweisen. Mithilfe dieser Features können Sie die Anzahl der von Ihrer Anwendung ausgelösten System.NullReferenceException-Klassen minimieren. Möglicherweise kennen Sie die Syntax durch die Verwendung von ? für optionale Eigenschaften in TypeScript.
  5. LINQ: Language Integrated Query (LINQ) bietet eine allgemeine Syntax zum Abfragen und Transformieren von Daten (unabhängig vom Speicher).

Wenn Sie sich weiter mit der Sprache beschäftigen, werden Sie weitere Unterschiede erkennen, aber viele dieser Unterschiede sind nur geringfügig.

Einige vertraute Features und Idiome aus JavaScript und TypeScript sind in C# nicht verfügbar:

  1. Dynamische Typen: C# verwendet die statische Typisierung. Eine Variablendeklaration enthält den Typ, und dieser Typ kann nicht geändert werden. Es gibt einen dynamic-Typ in C#, der die Laufzeitbindung ermöglicht.
  2. Prototypische Vererbung: Die C#-Vererbung ist Teil der Typdeklaration. Eine class-Deklaration in C# gibt eine beliebige Basisklasse an. In JavaScript können Sie die __proto__-Eigenschaft so festlegen, dass der Basistyp für jede Instanz festgelegt wird.
  3. Interpretierte Sprache: C#-Code muss kompiliert werden, bevor Sie ihn ausführen. JavaScript-Code kann direkt im Browser ausgeführt werden.

Darüber hinaus stehen einige weitere TypeScript-Features in C# nicht zur Verfügung:

  1. Union-Typen: C# unterstützt keine Union-Typen. Entwurfsvorschläge sind jedoch in Bearbeitung.
  2. Decorators: C# umfasst keine Decorators. Einige gängige Decorators (z. B. @sealed) sind in C# reservierte Schlüsselwörter. Andere gängige Decorators verfügen möglicherweise über entsprechende Attribute. Für andere Decorators können Sie eigene Attribute erstellen.
  3. Verzeihlichere Syntax: Der C#-Compiler parst Code strenger als JavaScript erfordert.

Wenn Sie eine Webanwendung erstellen, sollten Sie die Verwendung von Blazor zum Erstellen Ihrer Anwendung in Betracht ziehen. Blazor ist ein Full-Stack-Webframework, das für .NET und C# erstellt wurde. Blazor-Komponenten können auf dem Server, als .NET-Assemblys oder auf dem Client mit WebAssembly ausgeführt werden. Blazor unterstützt die Interoperabilität mit Ihren bevorzugten JavaScript- oder TypeScript-Bibliotheken.