Roteiro para desenvolvedores JavaScript e TypeScript aprendendo C#
C#, TypeScript e JavaScript são todos membros da família C de linguagens de programação. As semelhanças entre as linguagens de programação ajudam você a se tornar produtivo rapidamente em C#.
- Sintaxe semelhante: JavaScript, TypeScript e C# estão na família C de linguagens de programação. Essa similaridade significa que você já pode ler e entender C#. Há algumas diferenças, mas a maior parte da sintaxe é igual a JavaScript e C. As chaves e os pontos-e-vírgulas são familiares. As instruções de controle, como
if
,else
eswitch
, são as mesmas. As instruções de loopfor
,while
edo
...while
são as mesmas. As mesmas palavras-chave paraclass
einterface
estão em C# e TypeScript. Os modificadores de acesso em TypeScript e C#, depublic
atéprivate
, são os mesmos. - O token
=>
: todas as linguagens de programação dão suporte a definições de função leves. Em C#, elas são conhecidas como expressões lambda, em JavaScript, normalmente são chamadas de funções de seta. - Hierarquias de função: todas as três linguagens dão suporte a funções locais, que são funções definidas em outras funções.
- Assíncrono/Espera: todas as três linguagens compartilham as mesmas palavras-chave
async
eawait
para programação assíncrona. - Coleta de lixo: todos os três idiomas dependem de um coletor de lixo para o gerenciamento automático de memória.
- Modelo de evento: a sintaxe
event
do C#é semelhante ao modelo do JavaScript para eventos do DOM (Modelo de Objeto do Documento). - Gerenciador de pacotes: o NuGet é o gerenciador de pacotes mais comum para C# e .NET, semelhante ao npm para aplicativos JavaScript. As bibliotecas C# são entregues em assemblies.
À medida que continuar aprendendo C#, você aprenderá conceitos que não fazem parte do JavaScript. Alguns desses conceitos podem ser familiares se você usa o TypeScript:
- Sistema de tipagem do C#: o C# é uma linguagem fortemente tipada. Cada variável tem um tipo e esse tipo não pode ser alterado. Você define os tipos
class
oustruct
. Você pode definir definiçõesinterface
que definem o comportamento implementado por outros tipos. O TypeScript inclui muitos desses conceitos, mas como o TypeScript é criado em JavaScript, o sistema de tipos não é tão estrito. - Correspondência de padrões: a correspondência de padrões permite instruções condicionais concisas e expressões com base na forma de estruturas de dados complexas. A expressão
is
verifica se uma variável "é" algum padrão. A expressãoswitch
baseada em padrão fornece uma sintaxe avançada para inspecionar uma variável e tomar decisões com base nas características dela. - Interpolação de cadeia de caracteres e literais de cadeia de caracteres brutos: a interpolação de cadeia de caracteres permite inserir expressões avaliadas em uma cadeia de caracteres, em vez de usar identificadores posicionais. Literais de cadeia de caracteres brutos fornecem uma maneira de minimizar sequências de escape no texto.
- Tipos anuláveis e não anuláveis: O C# dá suporte a tipos de valor anuláveis e tipos de referência anuláveis acrescentando o sufixo
?
a um tipo. Para tipos que permitem valor nulo, o compilador avisa se você não verificarnull
antes de desreferenciar a expressão. Para tipos não anuláveis, o compilador avisa se você pode estar atribuindo um valornull
a essa variável. Esses recursos podem minimizar a geração de uma System.NullReferenceException pelo seu aplicativo. A sintaxe pode ser familiar do uso de?
pelo TypeScript para propriedades opcionais. - LINQ: a consulta integrada à linguagem (LINQ) fornece uma sintaxe comum para consultar e transformar dados, independentemente de seu armazenamento.
À medida que você aprende mais, outras diferenças se tornam aparentes, mas muitas dessas diferenças são menores no escopo.
Alguns recursos e expressões familiares de JavaScript e TypeScript não estão disponíveis em C#:
- tipos dinâmicos: o C# usa tipagem estática. Uma declaração de variável inclui o tipo e esse tipo não pode ser alterado. Há um tipo
dynamic
em C# que fornece associação em tempo de execução. - Herança prototípica: a herança de C# faz parte da declaração de tipo. Uma declaração
class
de C# declara qualquer classe base. No JavaScript, você pode definir a propriedade__proto__
para definir o tipo base em qualquer instância. - Linguagem interpretada: o código C# precisa ser compilado antes de você executá-lo. O código JavaScript pode ser executado diretamente no navegador.
Além disso, mais alguns recursos do TypeScript não estão disponíveis em C#:
- Tipos de união: o C# não dá suporte a tipos de união. No entanto, há propostas de design em andamento.
- Decoradores: o C# não tem decoradores. Alguns decoradores comuns, como
@sealed
, são palavras-chave reservadas em C#. Outros decoradores comuns podem ter Atributos correspondentes. Para outros decoradores, você pode criar seus atributos. - Sintaxe mais indulgente: o compilador C# analisa o código mais estritamente do que o JavaScript.
Se você estiver criando um aplicativo Web, considere usar o Blazor para criar seu aplicativo. O Blazor é uma estrutura da Web de pilha completa criada para .NET e C#. Os componentes do Blazor podem ser executados no servidor como assemblies .NET ou então no cliente, usando WebAssembly. O Blazor dá suporte à interoperabilidade com suas bibliotecas JavaScript ou TypeScript favoritas.