Comparteix a través de


Plan de desarrollo para desarrolladores de JavaScript y TypeScript que aprenden C#

C#, TypeScript y JavaScript son miembros de la familia de lenguajes de C. Las similitudes entre los lenguajes le ayudan a ser productivos rápidamente en C#.

  1. Sintaxis similar: JavaScript, TypeScript y C# están en la familia de lenguajes C. Esa similitud significa que ya puede leer y comprender C#. Hay algunas diferencias, pero la mayoría de la sintaxis es la misma que JavaScript y C. Las llaves y puntos y comas son familiares. Las instrucciones de control como if, else y switch son las mismas. Las instrucciones de bucle de for, while y do...while son las mismas. Las mismas palabras clave para class y interface están en C# y TypeScript. Los modificadores de acceso de TypeScript y C#, de public a private, son los mismos.
  2. El token =>: todos los lenguajes admiten definiciones de función ligeras. En C# se denominan expresiones lambda, mientras que en JavaScript normalmente se denominan funciones de flecha.
  3. Jerarquías de funciones: los tres lenguajes admitenfunciones locales, que son funciones definidas en otras funciones.
  4. Async y Await: los tres lenguajes comparten las mismas palabras clave async y await para la programación asincrónica.
  5. Recolección de elementos no utilizados: los tres lenguajes dependen de un recolector de elementos no utilizados para la administración automática de memoria.
  6. Modelo de eventos: la sintaxis event de C# es similar al modelo de JavaScript para eventos del modelo de objetos de documento (DOM).
  7. Administrador de paquetes: NuGet es el administrador de paquetes más común para C# y .NET, similar a npm para las aplicaciones de JavaScript. Las bibliotecas de C# se entregan en ensamblados.

A medida que siga aprendiendo C#, aprenderá conceptos que no forman parte de JavaScript. Algunos de estos conceptos pueden resultarle familiares si usa TypeScript:

  1. Sistema de tipos de C#: C# es un lenguaje fuertemente tipado. Cada variable tiene un tipo y ese tipo no puede cambiar. Debe definir tipos class o struct. Puede definir definiciones interface que definan el comportamiento implementado por otros tipos. TypeScript incluye muchos de estos conceptos, pero como TypeScript se basa en JavaScript, el sistema de tipos no es tan estricto.
  2. Coincidencia de patrones: la coincidencia de patrones permite instrucciones condicionales y expresiones concisas basadas en la forma de estructuras de datos complejas. La expresiónis comprueba si una variable "es" algún patrón. La expresión switch basada en patrones proporciona una rica sintaxis para inspeccionar una variable y tomar decisiones basadas en sus características.
  3. Interpolación de cadenas y literales de cadena: la interpolación de cadenas le permite insertar expresiones evaluadas en una cadena, en lugar de utilizar identificadores posicionales. Los literales de cadena sin formato proporcionan una manera de minimizar las secuencias de escape en el texto.
  4. Tipos anulables y no anulables: C# admite tipos de valor anulables, y tipos de referencia anulables añadiendo el sufijo ? a un tipo. Para los tipos anulables, el compilador le avisa si no comprueba null antes de dereferenciar la expresión. Para los tipos no anulables, el compilador le avisa si puede estar asignando un valor null a esa variable. Estas características pueden minimizar la aplicación iniciando una System.NullReferenceException. La sintaxis puede resultar familiar por el uso que hace TypeScript de ? para las propiedades opcionales.
  5. LINQ: Language Integrated Query (LINQ) proporciona una sintaxis común para consultar y transformar datos, independientemente de su almacenamiento.

A medida que se aprende más se aprecian otras diferencias, pero muchas de ellas son de menor alcance.

Algunas características y expresiones conocidas de JavaScript y TypeScript no están disponibles en C#:

  1. tipos dinámicos: C# usa la escritura estática. Una declaración de variable incluye el tipo y ese tipo no puede cambiar. Hay un tipo dynamic en C# que proporciona un enlace en tiempo de ejecución.
  2. Herencia prototípica: la herencia de C# forma parte de la declaración de tipos. Una declaración class de C# indica cualquier clase base. En JavaScript, puede establecer la propiedad __proto__ para establecer el tipo base en cualquier instancia.
  3. Lenguaje interpretado: el código de C# debe compilarse antes de ejecutarlo. El código JavaScript se puede ejecutar directamente en el explorador.

Además, algunas características más de TypeScript no están disponibles en C#:

  1. Tipos de unión: C# no admite tipos de unión. Sin embargo, las propuestas de diseño están en curso.
  2. Decoradores: C# no tiene decoradores. Algunos decoradores comunes, como @sealed, son palabras clave reservadas en C#. Otros decoradores comunes pueden tener atributos correspondientes. Para otros decoradores, puede crear sus propios atributos.
  3. Sintaxis más indulgente: el compilador de C# analiza el código de forma más estricta que JavaScript.

Si va a compilar una aplicación web, considere la posibilidad de usar Blazor para compilar la aplicación. Blazor es un marco web de pila completa creado para .NET y C#. Los componentes de Blazor se pueden ejecutar en el servidor, como ensamblados de .NET o en el cliente mediante WebAssembly. Blazor admite la interoperabilidad con sus bibliotecas favoritas de JavaScript o TypeScript.