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#.
- 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
yswitch
son las mismas. Las instrucciones de bucle defor
,while
ydo
...while
son las mismas. Las mismas palabras clave paraclass
yinterface
están en C# y TypeScript. Los modificadores de acceso de TypeScript y C#, depublic
aprivate
, son los mismos. - 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. - Jerarquías de funciones: los tres lenguajes admitenfunciones locales, que son funciones definidas en otras funciones.
- Async y Await: los tres lenguajes comparten las mismas palabras clave
async
yawait
para la programación asincrónica. - 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.
- Modelo de eventos: la sintaxis
event
de C# es similar al modelo de JavaScript para eventos del modelo de objetos de documento (DOM). - 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:
- 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
ostruct
. Puede definir definicionesinterface
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. - Coincidencia de patrones: la coincidencia de patrones permite instrucciones condicionales y expresiones concisas basadas en la forma de estructuras de datos complejas. La expresión
is
comprueba si una variable "es" algún patrón. La expresiónswitch
basada en patrones proporciona una rica sintaxis para inspeccionar una variable y tomar decisiones basadas en sus características. - 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.
- 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 compruebanull
antes de dereferenciar la expresión. Para los tipos no anulables, el compilador le avisa si puede estar asignando un valornull
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. - 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#:
- 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. - 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. - 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#:
- Tipos de unión: C# no admite tipos de unión. Sin embargo, las propuestas de diseño están en curso.
- 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. - 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.