Roadmap para desenvolvedores JavaScript e TypeScript aprendendo C#
C#, TypeScript e JavaScript são todos membros da família de linguagens C. As semelhanças entre as linguagens ajudam você a se tornar produtivo rapidamente em C#.
- Sintaxe semelhante: JavaScript, TypeScript e C# estão na família C de linguagens. Essa semelhança significa que você já pode ler e entender C#. Existem algumas diferenças, mas a maior parte da sintaxe é a mesma que JavaScript e C. Os suportes encaracolados e ponto-e-vírgula são familiares. As instruções de controle como
if
,else
,switch
são as mesmas. As instruções de looping defor
,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
paraprivate
, são os mesmos. - O
=>
token: Todos os idiomas suportam definições de função leves. Em C#, elas são chamadas de expressões lambda, em JavaScript, elas são normalmente chamadas de funções de seta. - Hierarquias de funções: Todas as três linguagens suportam funções locais, que são funções definidas em outras funções.
- Async / Await: Todas as três linguagens compartilham o mesmo
async
eawait
palavras-chave para programação assíncrona. - Coleta de lixo: Todos os três idiomas dependem de um coletor de lixo para gerenciamento automático de memória.
- Modelo de evento: a sintaxe do
event
C# é semelhante ao modelo do JavaScript para eventos DOM (document object model). - 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.
Ao continuar aprendendo C#, você aprenderá conceitos que não fazem parte do JavaScript. Alguns desses conceitos podem ser familiares para você se você usar o TypeScript:
- Sistema de tipo C#: C# é uma linguagem fortemente tipada. Cada variável tem um tipo, e esse tipo não pode mudar. Você define
class
oustruct
digita. Você pode definirinterface
definições que definem o comportamento implementado por outros tipos. O TypeScript inclui muitos desses conceitos, mas como o TypeScript é construído em JavaScript, o sistema de tipos não é tão rigoroso. - Correspondência de padrões: a correspondência de padrões permite instruções e expressões condicionais concisas com base na forma de estruturas de dados complexas. A
is
expressão verifica se uma variável "é" algum padrão. A expressão baseada emswitch
padrões fornece uma sintaxe rica para inspecionar uma variável e tomar decisões com base em suas características. - 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. Os literais de cadeia de caracteres brutos fornecem uma maneira de minimizar as sequências de escape no texto.
- Tipos anuláveis e não anuláveis: C# suporta tipos de valor anuláveis e tipos de referência anuláveis anexando o sufixo
?
a um tipo. Para tipos anuláveis, 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 umnull
valor a essa variável. Esses recursos podem minimizar o lançamento de um System.NullReferenceExceptionarquivo . A sintaxe pode ser familiar a partir do uso do TypeScript para?
propriedades opcionais. - LINQ: Language Integrated query (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 em escopo.
Alguns recursos e expressões idiomáticas familiares do JavaScript e do TypeScript não estão disponíveis em C#:
- tipos dinâmicos: C# usa digitação estática. Uma declaração de variável inclui o tipo, e esse tipo não pode ser alterado. Há um
dynamic
tipo em C# que fornece vinculação de tempo de execução. - Herança prototípica: a herança C# faz parte da declaração de tipo. Uma declaração C#
class
indica qualquer classe base. Em JavaScript, você pode definir a__proto__
propriedade para definir o tipo base em qualquer instância. - Linguagem interpretada: o código C# deve ser compilado antes de ser executado. 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: C# não suporta tipos de união. No entanto, estão em curso propostas de conceção.
- Decoradores: 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 próprios atributos. - Sintaxe mais tolerante: O compilador C# analisa o código mais estritamente do que o JavaScript exige.
Se você estiver criando um aplicativo Web, considere usar Blazor para criar seu aplicativo. Blazor é um framework web full-stack criado para .NET e C#. Os componentes Blazor podem ser executados no servidor, como assemblies .NET, ou no cliente usando WebAssembly. Blazor suporta interoperabilidade com suas bibliotecas favoritas JavaScript ou TypeScript.