Freigeben über


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

C#, TypeScript und JavaScript sind alle Mitglieder der C-Familie von Sprachen. Die Ähnlichkeiten zwischen den Sprachen helfen Ihnen, schnell produktiv in C# zu werden.

  1. Ähnliche Syntax: JavaScript, TypeScript und C# befinden sich in der C-Familie der Sprachen. Diese Ähnlichkeit bedeutet, dass Sie C# bereits lesen und verstehen können. Es gibt einige Unterschiede, aber die meiste Syntax ist gleich wie bei JavaScript und C. Die geschweiften Klammern und Semikolons sind vertraut. Steuerelementanweisungen wie if, else und switch sind identisch. Die Schleifenanweisungen for, while, und do...while sind ebenfalls identisch. Die gleichen Schlüsselwörter für class und interface befinden sich sowohl in C# als auch in TypeScript. Die Zugriffsmodifizierer in TypeScript und C#, von public bis private, sind identisch.
  2. Das => Token: Alle Sprachen unterstützen einfache Funktionsdefinitionen. In C# werden sie in JavaScript als Lambda-Ausdrücke bezeichnet, sie werden in der Regel als Pfeilfunktionen bezeichnet.
  3. Funktionshierarchien: Alle drei Sprachen unterstützen lokale Funktionen, die in anderen Funktionen definiert sind.
  4. Async /Await: Alle drei Sprachen verwenden die gleichen async und await Schlüsselwörter für die asynchrone Programmierung.
  5. Garbage Collection: Alle drei Sprachen basieren auf einem Garbage Collector für die automatische Speicherverwaltung.
  6. Ereignismodell: Die Syntax von event C# ähnelt dem JavaScript-Modell für DOM-Ereignisse (Document Object Model).
  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.

Während Sie C# lernen, 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 typierte Sprache. Jede Variable hat einen Typ, und dieser Typ kann nicht geändert werden. Sie definieren class oder struct typen. Sie können Definitionen definieren interface , 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 ein Bestimmtes Muster ist. 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. Die Syntax könnte aus der Verwendung von ? durch TypeScript für optionale Eigenschaften vertraut sein.
  5. LINQ: Language Integrated Query (LINQ) bietet eine allgemeine Syntax zum Abfragen und Transformieren von Daten (unabhängig vom Speicher).

Wenn Sie mehr darüber lernen, werden weitere Unterschiede offensichtlich, aber viele dieser Unterschiede sind weniger bedeutend.

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

  1. dynamische Typen: C# verwendet statische Typisierung. Eine Variabledeklaration enthält den Typ, und dieser Typ kann nicht geändert werden. Es gibt einen dynamic Typ in C#, der laufzeitbindung bereitstellt.
  2. Prototypische Vererbung: C#-Vererbung ist Teil der Typdeklaration. Eine C# class -Deklaration 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. Designvorschläge sind jedoch in Bearbeitung.
  2. Dekorateure: C# verfügt nicht über Dekorateure. Einige gängige Decorators (z. B. @sealed) sind in C# reservierte Schlüsselwörter. Andere gängige Dekorateure verfügen möglicherweise über entsprechende Attribute. Für andere Dekorateure 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.