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.
- Ä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
undswitch
sind identisch. Die Schleifenanweisungenfor
,while
, unddo
...while
sind ebenfalls identisch. In C# und TypeScript sind dieselben Schlüsselwörter fürclass
undinterface
verfügbar. Die Zugriffsmodifizierer vonpublic
zuprivate
sind in TypeScript und C# identisch. - Das
=>
-Token: Alle Sprachen unterstützen einfache Funktionsdefinitionen. In C# werden sie als Lambdaausdrücke bezeichnet, in JavaScript hingegen Pfeilfunktionen. - Funktionshierarchien: Alle drei Sprachen unterstützen lokale Funktionen, bei denen es sich um Funktionen handelt, die in anderen Funktionen definiert sind.
- „async“ und „await“: Alle drei Sprachen verwenden dieselben
async
- undawait
-Schlüsselwörter für die asynchrone Programmierung. - Garbage Collection: Alle drei Sprachen verwenden einen Garbage Collector für die automatische Arbeitsspeicherverwaltung.
- Ereignismodell: Die
event
-Syntax in C# ähnelt dem JavaScript-Modell für Dokumentobjektmodell-Ereignisse (Document Object Model, DOM). - 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:
- C#-Typsystem: C# ist eine stark typisierte Sprache. Jede Variable hat einen Typ, und dieser Typ kann nicht geändert werden. Sie definieren
class
- oderstruct
-Typen. Sie könneninterface
-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. - 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 musterbasierteswitch
-Ausdruck bietet eine umfangreiche Syntax, um eine Variable zu prüfen und Entscheidungen basierend auf ihren Merkmalen zu treffen. - 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.
- 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 aufnull
überprüfen, bevor Sie den Ausdruck dereferenzieren. Bei Non-Nullable-Typen werden Sie vom Compiler gewarnt, wenn Sie dieser Variablen möglicherweise einennull
-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. - 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:
- 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. - 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. - 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:
- Union-Typen: C# unterstützt keine Union-Typen. Entwurfsvorschläge sind jedoch in Bearbeitung.
- 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. - 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.