Delen via


Roadmap voor JavaScript- en TypeScript-ontwikkelaars die C leren#

C#, TypeScript en JavaScript zijn alle leden van de C-familie van talen. De overeenkomsten tussen de talen helpen u snel productief te worden in C#.

  1. Vergelijkbare syntaxis: JavaScript, TypeScript en C# bevinden zich in de C-familie van talen. Deze overeenkomst betekent dat u C# al kunt lezen en begrijpen. Er zijn enkele verschillen, maar de meeste syntaxis is hetzelfde als JavaScript en C. De accolades en puntkomma's zijn bekend. De besturingsinstructies zoals if, elseswitch zijn hetzelfde. De lusinstructies van for, whileen do...while zijn hetzelfde. Dezelfde trefwoorden voor class en interface bevinden zich in zowel C# als TypeScript. De toegangsaanpassingen in TypeScript en C# zijn public privatehetzelfde.
  2. Het => token: alle talen ondersteunen lichtgewicht functiedefinities. In C# worden ze aangeduid als lambda-expressies, in JavaScript, worden ze meestal pijlfuncties genoemd.
  3. Functiehiërarchieën: alle drie de talen ondersteunen lokale functies, die functies zijn gedefinieerd in andere functies.
  4. Async/ Await: alle drie de talen delen dezelfde async en await trefwoorden voor asynchrone programmering.
  5. Garbagecollection: alle drie de talen zijn afhankelijk van een garbagecollection voor automatisch geheugenbeheer.
  6. Gebeurtenismodel: de syntaxis van event C# is vergelijkbaar met het JavaScript-model voor DOM-gebeurtenissen (Document Object Model).
  7. Package Manager: NuGet is de meest voorkomende pakketbeheerder voor C# en .NET, vergelijkbaar met npm voor JavaScript-toepassingen. C#-bibliotheken worden geleverd in assembly's.

Terwijl u C# blijft leren, leert u concepten die geen deel uitmaken van JavaScript. Sommige van deze concepten zijn mogelijk bekend als u TypeScript gebruikt:

  1. C#-typesysteem: C# is een sterk getypte taal. Elke variabele heeft een type en dat type kan niet worden gewijzigd. U definieert of struct typtclass. U kunt definities definiëren interface waarmee gedrag wordt gedefinieerd dat door andere typen wordt geïmplementeerd. TypeScript bevat veel van deze concepten, maar omdat TypeScript is gebouwd op JavaScript, is het typesysteem niet zo strikt.
  2. Patroonkoppeling: Patroonkoppeling maakt beknopte voorwaardelijke instructies en expressies mogelijk op basis van de vorm van complexe gegevensstructuren. De is expressie controleert of een variabele 'is' een bepaald patroon heeft. De op patronen gebaseerde switch expressie biedt een uitgebreide syntaxis om een variabele te inspecteren en beslissingen te nemen op basis van de kenmerken ervan.
  3. Tekenreeksinterpolatie en letterlijke tekenreeksen: met tekenreeksinterpolatie kunt u geëvalueerde expressies in een tekenreeks invoegen in plaats van positionele id's te gebruiken. Letterlijke tekenreeksen van onbewerkte tekenreeksen bieden een manier om escapereeksen in tekst te minimaliseren.
  4. Nullable en niet-nullable typen: C# ondersteunt nullable waardetypen en nullable verwijzingstypen door het ? achtervoegsel toe te voegen aan een type. Voor null-typen waarschuwt de compiler u als u niet controleert null voordat u de expressie opnieuw uitstellen. Voor niet-null-typen waarschuwt de compiler u als u mogelijk een null waarde aan die variabele toewijst. Deze functies kunnen uw toepassing minimaliseren die een System.NullReferenceException. De syntaxis is mogelijk bekend bij het gebruik van ? TypeScript voor optionele eigenschappen.
  5. LINQ: Language Integrated Query (LINQ) biedt een algemene syntaxis voor het opvragen en transformeren van gegevens, ongeacht de opslag.

Naarmate u meer leert, worden er meer verschillen zichtbaar, maar veel van deze verschillen zijn kleiner binnen het bereik.

Sommige vertrouwde functies en idiomen van JavaScript en TypeScript zijn niet beschikbaar in C#:

  1. dynamische typen: C# maakt gebruik van statisch typen. Een variabeledeclaratie bevat het type en dat type kan niet worden gewijzigd. Er is een dynamic type in C# dat runtimebinding biedt.
  2. Prototypal-overname: C#-overname maakt deel uit van de typedeclaratie. Een C# class -declaratie geeft een basisklasse weer. In JavaScript kunt u de __proto__ eigenschap instellen om het basistype in te stellen op elk exemplaar.
  3. Geïnterpreteerde taal: C#-code moet worden gecompileerd voordat u deze uitvoert. JavaScript-code kan rechtstreeks in de browser worden uitgevoerd.

Daarnaast zijn er nog enkele TypeScript-functies niet beschikbaar in C#:

  1. Samenvoegtypen: C# biedt geen ondersteuning voor samenvoegtypen. Ontwerpvoorstellen worden echter uitgevoerd.
  2. Decorators: C# heeft geen decorators. Enkele algemene decorators, zoals @sealed gereserveerde trefwoorden in C#. Andere algemene decorators kunnen overeenkomende kenmerken hebben. Voor andere decorators kunt u uw eigen kenmerken maken.
  3. Meer vergevende syntaxis: de C#-compiler parseert code strikter dan JavaScript vereist.

Als u een webtoepassing bouwt, kunt u overwegen blazor te gebruiken om uw toepassing te bouwen. Blazor is een volledig stack-webframework dat is gebouwd voor .NET en C#. Blazor-onderdelen kunnen worden uitgevoerd op de server, als .NET-assembly's of op de client met behulp van WebAssembly. Blazor ondersteunt interop met uw favoriete JavaScript- of TypeScript-bibliotheken.