"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Do TypeScript ao Golang: uma jornada de back-end mais tranquila

Do TypeScript ao Golang: uma jornada de back-end mais tranquila

Publicado em 01/08/2024
Navegar:139

From TypeScript to Golang: A Smoother Backend Journey

Nos últimos três anos, estive imerso no mundo do desenvolvimento back-end. Durante esse tempo, tive a oportunidade de construir uma ampla gama de aplicações usando diversas tecnologias. De plataformas edutech e healthtech a soluções de comércio eletrônico, utilizei TypeScript com Express.js e Python com FastAPI e Flask. Recentemente, embarquei em um empreendimento pessoal que impulsionou minha jornada com Golang e tem sido uma experiência transformadora.

O impacto do Golang tem sido duplo: velocidade e segurança. Seu sistema de digitação estática e o foco na simultaneidade me permitiram agilizar meu processo de desenvolvimento e lançar aplicativos com mais rapidez. Além disso, reduziu significativamente as chances de encontrar erros inesperados que podem afetar linguagens de tipo dinâmico. Essa nova confiança mudou o jogo, permitindo-me focar na criação de sistemas back-end robustos e eficientes.

Agora, vamos nos aprofundar nos principais motivos por trás dessa mudança:

1. Aproveite o poder da digitação estática:

Uma das maiores vantagens do Golang é seu sistema de digitação estática. Ao contrário da dependência do TypeScript em verificações de tempo de execução, Golang reforça a segurança de tipo em tempo de compilação. Este trecho de código mostra a distinção clara:

TypeScript (digitação dinâmica):

function add(a: any, b: any): any {
  return a   b;
}

const result = add(10, "hello"); // This would compile but cause a runtime error
console.log(result);

Golang (digitação estática):

func add(a int, b int) int {
  return a   b
}

result := add(10, 20) // This compiles successfully
fmt.Println(result)

Com Golang, possíveis incompatibilidades de tipo são detectadas antecipadamente, evitando erros de tempo de execução e comportamento inesperado.

2. Ampliando com facilidade:

Golang brilha quando se trata de lidar com cargas de trabalho de alta simultaneidade. Seus mecanismos integrados, como goroutines e canais, fornecem maneiras eficientes de gerenciar tarefas simultâneas sem a necessidade de soluções complexas de escalonamento. Aqui está um vislumbre de uma goroutine simples em ação:

go func() {
  // Perform a long-running task here
  fmt.Println("Task completed in a separate goroutine")
}()

// Main program continues execution concurrently
fmt.Println("Main program running")

Essa abordagem promove simultaneidade leve, permitindo que seu back-end lide com centenas de milhares de solicitações com facilidade.

3. Adeus, erros de tempo de execução:

A natureza transpilada do TypeScript às vezes pode levar a erros de tempo de execução que não seriam aparentes durante o desenvolvimento. A digitação estática de Golang atenua esse problema significativamente. Detectar erros no início do processo de compilação se traduz em um back-end mais robusto e previsível.

4. Tratamento de erros explícitos:

Golang adota uma abordagem única para tratamento de erros em comparação com linguagens como TypeScript. Ele utiliza valores de erro retornados por funções, forçando os desenvolvedores a considerar e lidar explicitamente com possíveis erros. Essa abordagem, embora exija mais esforço inicial, promove um estilo de codificação mais deliberado e resistente a erros. Ao esperar explicitamente erros onde eles possam ocorrer, podemos escrever código que lide normalmente com situações inesperadas e evite falhas em cascata.

Aqui está um trecho de código mostrando o tratamento explícito de erros em Golang:

func readFile(filename string) ([]byte, error) {
  data, err := os.ReadFile(filename)
  if err != nil {
    return nil, fmt.Errorf("error reading file %s: %w", filename, err)
  }
  return data, nil
}

Neste exemplo, a função os.ReadFile retorna os dados e um erro potencial. Usamos uma instrução if para verificar o erro e tratá-lo normalmente. Observe como também usamos fmt.Errorf para encapsular o erro original e fornecer mais contexto em nossa mensagem de erro personalizada. Esta é uma das formas idiomáticas de lidar com erros no Golang, fornecendo mensagens informativas para fins de depuração.

5. Construindo sobre uma base sólida:

As ferramentas de construção e teste do Golang são excelentes. Ferramentas como go build e go test são perfeitamente integradas, oferecendo uma experiência de desenvolvimento tranquila. Além disso, a estrutura de testes integrada em Golang fornece uma maneira limpa e eficiente de escrever testes de unidade.

Embora o TypeScript ofereça suas próprias vantagens, a combinação de digitação estática, recursos de simultaneidade e ferramentas robustas em Golang melhorou significativamente meu fluxo de trabalho de desenvolvimento de back-end. É uma linguagem projetada para lidar com aplicativos exigentes de maneira eficiente e estou animado para explorar todo o seu potencial!

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/thelamedev/from-typescript-to-golang-a-smoother-backend-journey-2a6h?1 Se houver alguma violação, entre em contato com [email protected] para excluir isto
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3