Поделиться через


Дорожная карта для разработчиков JavaScript и TypeScript, изучающих C#

C#, TypeScript и JavaScript являются членами семейства языков C. Сходство между языками помогает быстро повысить эффективность работы в C#.

  1. Аналогичный синтаксис: JavaScript, TypeScript и C# находятся в семействе языков C. Это сходство означает, что вы уже можете читать и понимать C#. Существует несколько различий, но большая часть синтаксиса совпадает с JavaScript и C. Фигурные скобки и точка с запятой знакомы. Операторы управления, такие как if, else, switch, имеют сходные функции. Операторные инструкции циклов for, whileи doдоwhile одинаковы. Одни и те же ключевые слова для class и interface находятся как в C#, так и в TypeScript. Модификаторы доступа в TypeScript и C#, от public до private, одинаковы.
  2. Маркер =>: все языки поддерживают облегченные определения функций. В C#они называются лямбда-выражениями в JavaScript, обычно они называются функциями со стрелками.
  3. иерархии функций: все три языка поддерживают локальные функции, которые являются функциями, определенными в других функциях.
  4. Async / Await: все три языка используют одинаковые async и ключевые слова await для асинхронного программирования.
  5. сборка мусора: все три языка основаны на сборщике мусора для автоматического управления памятью.
  6. модель событий: синтаксис event C#аналогичен модели JavaScript для событий объектной модели документа (DOM).
  7. диспетчер пакетов: NuGet — это наиболее распространенный диспетчер пакетов для C# и .NET, аналогичный npm для приложений JavaScript. Библиотеки C# предоставляются в сборках.

По мере изучения C#вы узнаете о понятиях, которые не являются частью JavaScript. Некоторые из этих понятий могут быть знакомы с вами, если вы используете TypeScript:

  1. система типов C#: C# — строго типизированный язык. Каждая переменная имеет тип, и этот тип не может измениться. Вы определяете типы class или struct. Вы можете определить определения interface, определяющие поведение, реализованное другими типами. TypeScript включает многие из этих понятий, но так как TypeScript построен на JavaScript, система типов не так строга.
  2. шаблонное сопоставление: шаблонное сопоставление позволяет создавать лаконичные условные операторы и выражения, основанные на форме сложных структур данных. Выражение is проверяет, соответствует ли переменная какому-либо шаблону. Выражение на основе шаблона switch предоставляет широкий синтаксис для проверки переменной и принятия решений на основе его характеристик.
  3. интерполяция строк и необработанные строковые литералы: интерполяция строк позволяет вставлять вычислянные выражения в строку, а не использовать позиционные идентификаторы. Сырьевые строковые литералы позволяют уменьшить необходимость в escape-последовательностях в тексте.
  4. Типы, допускающие значение NULL и не допускающие значение NULL,: C# поддерживает типы значений, допускающие значение NULL,, и ссылочные типы, допускающие значение NULL, путем добавления суффикса ? к типу. Для типов с возможностью значения NULL компилятор предупреждает вас, если вы не проверяете наличие null перед разыменованием выражения. Для типов, не допускающих значение NULL, компилятор предупреждает вас, если вы можете присвоить значение null этой переменной. Эти функции могут свести к минимуму возникновение System.NullReferenceExceptionв вашем приложении. Синтаксис может быть знаком благодаря использованию примера ? в TypeScript для необязательных свойств.
  5. LINQ: языковой интегрированный запрос (LINQ) предоставляет общий синтаксис для запроса и преобразования данных независимо от его хранилища.

По мере того как вы узнаете больше, становятся очевидными другие различия, но многие из них незначительны.

Некоторые знакомые функции и идиомы из JavaScript и TypeScript недоступны в C#:

  1. динамических типов: C# использует статическую типизацию. Объявление переменной включает тип, и этот тип не может измениться. В C# есть тип dynamic, который предоставляет привязку среды выполнения.
  2. прототипное наследование: наследование C# является частью объявления типа. Объявление C# class указывает любой базовый класс. В JavaScript можно задать свойство __proto__, чтобы задать базовый тип для любого экземпляра.
  3. интерпретируемый язык: код C# необходимо скомпилировать перед его запуском. Код JavaScript можно запускать непосредственно в браузере.

Кроме того, несколько дополнительных функций TypeScript недоступны в C#:

  1. типы объединения: C# не поддерживает типы объединения. Однако проектные предложения находятся в процессе разработки.
  2. декораторы: C# не имеет декораторов. Некоторые распространенные декораторы, такие как @sealed, являются зарезервированными ключевыми словами в C#. Другие распространенные декораторы могут иметь соответствующие атрибуты. Для всех остальных декораторов вы можете создать собственные атрибуты.
  3. более простительный синтаксис: компилятор C# анализирует код более строго, чем требует JavaScript.

Если вы создаете веб-приложение, рекомендуется использовать Blazor для создания приложения. Blazor — это веб-платформа с полным стеком, созданная для .NET и C#. Компоненты Blazor могут выполняться на сервере, как сборки .NET или на клиенте с помощью WebAssembly. Blazor поддерживает взаимодействие с любимыми библиотеками JavaScript или TypeScript.