Udostępnij przez


Harmonogram działania dla deweloperów języka JavaScript i TypeScript uczących się języka C#

Jeśli dołączasz do zespołu korzystającego z języka C# lub rozważasz jego użycie do programowania po stronie serwera lub w pełnym stosie, ten artykuł pomoże Ci szybko stać się produktywnym. Wyróżnia to, co jest znane z języków JavaScript i TypeScript oraz co nowego w języku C#.

Języki C#, TypeScript i JavaScript są członkami rodziny języków C. Podobieństwa między językami ułatwiają szybkie zwiększenie produktywności w języku C#.

  1. Podobna składnia: JavaScript, TypeScript i C# znajdują się w rodzinie języków C. To podobieństwo oznacza, że można już przeczytać i zrozumieć język C#. Istnieją pewne różnice, ale większość składni jest taka sama jak JavaScript i C. Znane są nawiasy klamrowe i średniki. Instrukcje sterujące, takie jak if, elsei switch są takie same. Instrukcje pętli for, while i do...while są takie same. Te same słowa kluczowe dla class i interface znajdują się w językach C# i TypeScript. Modyfikatory dostępu w językach TypeScript i C#, z public do private, są takie same.
  2. => token: Wszystkie języki obsługują lekkie definicje funkcji. W języku C#są one nazywane wyrażeniami lambda. W języku JavaScript są one zwykle nazywane funkcjami strzałek.
  3. hierarchie funkcji: wszystkie trzy języki obsługują funkcje lokalne , które są funkcjami zdefiniowanymi w innych funkcjach.
  4. Async/Await: wszystkie trzy języki mają te same słowa kluczowe async i await dla programowania asynchronicznego.
  5. odzyskiwanie pamięci: wszystkie trzy języki korzystają z modułu odśmiecania pamięci na potrzeby automatycznego zarządzania pamięcią.
  6. model zdarzeń: składnia event języka C#jest podobna do modelu języka JavaScript dla zdarzeń modelu obiektów dokumentów (DOM).
  7. Menedżer pakietów: NuGet jest najczęściej używanym menedżerem pakietów dla języka C#, podobnie jak npm dla aplikacji JavaScript. Biblioteki języka C# są dostarczane w zestawach .

Składnia w skrócie

W poniższych przykładach pokazano kilka typowych wzorców obok siebie. Te porównania nie są wyczerpujące, ale zapewniają szybki wgląd w różnice składni.

Adnotacje typów:

// TypeScript
let name: string = "Hello";
let count: number = 5;
// C#
string name = "Hello";
int count = 5;

Async / await:

// TypeScript
async function fetchData(): Promise<string> {
    const response = await fetch(url);
    return await response.text();
}
// C#
async Task<string> FetchDataAsync() {
    var response = await client.GetAsync(url);
    return await response.Content.ReadAsStringAsync();
}

Dowiedz się więcej: Programowanie asynchroniczne

Klasy

// TypeScript
class Point {
    constructor(public x: number, public y: number) {}
}
// C#
record Point(int X, int Y);

Dowiedz się więcej: Rekordy

Dopasowywanie wzorca:

// TypeScript - manual type checking
if (typeof value === "string") { /* ... */ }
// C# - pattern matching
if (value is string s) { /* use s */ }

Dowiedz się więcej: Dopasowywanie wzorców

Co nowego w języku C#

Podczas nauki języka C#napotykasz pojęcia, które nie są częścią języka JavaScript. Niektóre z tych pojęć mogą cię znać, jeśli używasz języka TypeScript:

  1. C# system typów: C# jest silnie typizowanym językiem. Każda zmienna ma typ, a ten typ nie może ulec zmianie. Definiujesz typy class lub struct. Można zdefiniować definicje interface definiujące zachowanie zaimplementowane przez inne typy. Język TypeScript zawiera wiele z tych pojęć, ale ponieważ język TypeScript jest oparty na języku JavaScript, system typów nie jest tak rygorystyczny.
  2. Dopasowywanie wzorca: Dopasowywanie wzorca umożliwia zwięzłe instrukcje warunkowe i wyrażenia na podstawie kształtu złożonych struktur danych. Wyrażenie is sprawdza, czy zmienna "jest" pewnym wzorcem. Wyrażenie switch oparte na wzorcu udostępnia bogatą składnię do sprawdzania zmiennej i podejmowania decyzji na podstawie jej cech.
  3. interpolacja ciągów i surowych literali ciągów: interpolacja ciągów umożliwia wstawianie wyrażeń obliczeniowych w ciąg, zamiast używania identyfikatorów pozycyjnych. Nieprzetworzone literały ciągu umożliwiają zminimalizowanie sekwencji ucieczki w tekście.
  4. Typy dopuszczające i niedopuszczające wartość null: Język C# obsługuje typy wartościowe dopuszczające null i typy referencyjne dopuszczające null, poprzez dodanie sufiksu ? do typu. W przypadku typów dopuszczających wartość null kompilator wyświetli ostrzeżenie, jeśli nie sprawdzisz null przed wyłuszczeniem wyrażenia. W przypadku typów innych niż null kompilator ostrzega, czy może zostać przypisana wartość null do tej zmiennej. Te cechy mogą zminimalizować wystąpienie błędu System.NullReferenceExceptionw aplikacji. Składnia może być znana z TypeScript, gdzie używa się ? dla właściwości opcjonalnych.
  5. LINQ: zapytanie zintegrowane z językiem (LINQ) udostępnia wspólną składnię do wykonywania zapytań i przekształcania danych, niezależnie od jego magazynu.

Porada

Aby dowiedzieć się więcej na temat systemu typów języka C#, w tym class vs. struct, typów ogólnych i interfejsów, odwiedź stronę Omówienie systemu typów w sekcji Podstawy.

Gdy dowiesz się więcej, inne różnice stają się widoczne, ale wiele z tych różnic jest mniejszych w zakresie.

Niektóre znane funkcje idiomów z języków JavaScript i TypeScript nie są dostępne w języku C#:

  1. typy dynamiczne: język C# używa statycznego typowania. Deklaracja zmiennej zawiera typ i ten typ nie może ulec zmianie. W języku C# istnieje typ dynamic, który zapewnia powiązanie środowiska uruchomieniowego.
  2. dziedziczenie prototypowe: dziedziczenie języka C# jest częścią deklaracji typu. Deklaracja class języka C# określa dowolną klasę bazową. W języku JavaScript ustaw właściwość __proto__, aby ustawić typ podstawowy na dowolnym wystąpieniu.
  3. język interpretowany: przed uruchomieniem należy skompilować kod C#. Kod JavaScript można uruchamiać bezpośrednio w przeglądarce.

Ponadto kilka innych funkcji języka TypeScript nie jest dostępnych w języku C#:

  1. typy unii: C# nie obsługuje typów unii. Jednak propozycje projektowe są w toku.
  2. Decorators: C# nie ma dekoratorów. Niektóre popularne dekory, takie jak @sealed, to zastrzeżone słowa kluczowe w języku C#. Inne typowe dekoratory mogą mieć odpowiednie atrybuty . Dla innych dekoratorów możesz stworzyć własne atrybuty.
  3. bardziej wyrozumiała składnia: kompilator C# analizuje kod bardziej ściśle niż wymaga JavaScript.

Jeśli tworzysz aplikację internetową, rozważ użycie platformy Blazor do skompilowania aplikacji. Blazor to pełnostosowa platforma internetowa opracowana dla języka C#. Składniki platformy Blazor mogą być uruchamiane na serwerze jako zestawy platformy .NET lub na kliencie przy użyciu zestawu WebAssembly. Platforma Blazor obsługuje współdziałanie z ulubionymi bibliotekami JavaScript lub TypeScript.

Dalsze kroki