-
Notifications
You must be signed in to change notification settings - Fork 1
Compiler
Edgar Mesquita edited this page Jan 25, 2026
·
10 revisions
O compilador é o componente central que permite a magia do eQuantic.UI. Ele transforma a semântica do C# em código TypeScript eficiente e legível.
O TypeScriptEmitter é o ponto de entrada para a geração de arquivos .ts. Ele organiza as importações, define as classes e utiliza o CSharpToJsConverter para converter os corpos dos métodos.
Uma implementação baseada no padrão Strategy que percorre a árvore sintática (AST) do Roslyn.
- Cada tipo de expressão ou declaração C# possui uma estratégia dedicada (ex:
BinaryExpressionStrategy,IfStatementStrategy).
O conversor aplica heurísticas inteligentes para decidir como mapear nomes de variáveis:
- Propriedades e campos do C# são mapeados para
this.propertyNameno JS. - Variáveis locais e parâmetros mantêm seus nomes originais.
- Métodos do sistema como
Console.WriteLinesão automaticamente mapeados paraconsole.log.
Atualmente, o compilador suporta uma vasta gama de construções C#:
-
Expressões: Aritméticas, Lógicas, Ternários, Null-coalescing (
??). -
Control Flow:
if,switch,for,foreach,while. -
Exceções: Suporte completo a
try-catch-finally. -
LINQ: Conversão direta de métodos LINQ para equivalentes JS (
Select→map,Where→filter). -
Async/Await: Mapeamento de
TaskparaPromisee suporte aawaitnativo.
C# Source:
private void Increment() {
Count++;
if (Count > 10) Console.WriteLine("Max reached");
}TypeScript Output:
increment() {
this.count++;
if (this.count > 10) console.log("Max reached");
}