Porque é que deve (provavelmente) utilizar Typescript
Dominik Grzedzielski
Sénior Software Engineer
Toda a gente que utiliza o ecossistema JavaScript conhece hoje em dia o Typescript. O Typescript é uma das tecnologias mais adoradas* e a sua utilização está a aumentar constantemente (a quota de utilização aumentou de 52% em 2018 para 78% em 2020)*.
Posição atual de Tipografia não surgiu do nada, uma vez que esta tecnologia é capaz de melhorar efetivamente a nossa experiência de programador. Uma codificação mais explícita aumenta o controlo e a previsibilidade da código. Neste artigo, vou tentar convencê-lo a utilizar o Typescript.
Normalmente, quando se está a desenvolver uma aplicação em JavaScript, o seu fluxo pode tem este aspeto:
Fazer uma mudança,
Aceda à aplicação e verifique a parte alterada / Executar testes (relacionados).
Verificar se está tudo bem.
Com o Typescript, é possível fazer a alteração e, se houver algum erro de tipo no seu código, saberá imediatamente graças à mensagem de erro do compilador ou ao feedback em tempo real do IDE. É claro que o compilador Typescript não resolverá todos os problemas e não avisará sobre todos os erros, mas a sua ajuda pode ser inestimável.
Melhor conclusão da sintaxe nos IDEs
É muito simples. Se estiver a utilizar bons IDE, como o WebStorm ou o VSCode, obterá melhor preenchimento de sintaxe com Typescript. Talvez não pareça uma grande melhoria da experiência do programador, mas, eventualmente, cada melhoria é importante, pois pode salvar nós e, mais uma vez, evitar uma gralha ou um erro. Além disso, podemos definir o nosso tipo ou interface uma vez; como não temos de nos lembrar sempre da estrutura, podemos concentrar-nos em escrever a lógica comercial.
Refactoring menos doloroso
Imagine que tem de refactorizar por qualquer razão, por exemplo, juntou-se a um projeto e recebe a tarefa de adicionar uma nova funcionalidade, mas essa funcionalidade está de alguma forma ligada ao código antigo. O Typescript pode torná-lo mais fácil e menos doloroso, porque quando se faz uma alteração e há outro sítio onde se tem de fazer outra alteração, o compilador avisa-o disso.
Por exemplo - pode ser uma assinatura de função alterada ou talvez, após a alteração, uma devolverá algo totalmente diferente, pelo que o tipo devolvido também será diferente.
Ter mais confiança na base de código
JavaScript é fracamente e dinamicamente tipado, então quando você inicializa uma variável com o valor let query = '' mais tarde no código, o programador pode fazer algo irracional por engano, por exemplo consulta = verdadeiroe será um código JS válido.
Num código bem escrito, a atribuição de um valor booleano a uma variável que anteriormente era uma cadeia de caracteres não deveria acontecer. Por isso, normalmente, essa atribuição com mudança de tipo resulta de um erro.
Ao usar o Typescript, não podemos alterar o tipo da variável, portanto, se fizermos a variável let query = '' variável, será corda e não poderemos alterar o seu tipo por engano.
Se quisermos que uma variável seja de mais do que um tipo, fazemo-lo sempre explicitamente utilizando o tipo union, por exemplo cadeia | número.
Por conseguinte, o Typescript torna o nosso código mais previsível e explícito. Além disso, o Typescript trata da explicitação na análise do fluxo de controlo e, se houver a possibilidade de algo correr mal, avisa-o.
Aqui no exemplo do primeiro se bloco, obteremos um erro:
TS2339: A propriedade "battery" não existe no tipo "ClothingProduct 2 vezes, para bateriae ram propriedades.
No segundo bloco - senão, obteremos esse erro para tamanho propriedade. É claro que se trata apenas de um exemplo para mostrar como sindicatos discriminados e análise do fluxo de controlo funcionam em Typescript, pelo que não estamos a fazer nada de muito complexo com esse código.
Migração fácil e progressiva a partir do JavaScript
O código JavaScript válido é ao mesmo tempo código Typescript válido, pelo que pode migrar a sua base de código passo a passo. Normalmente, a utilização do modo estrito no Typescript é uma boa prática, mas neste caso, temos de começar por "strict": falso em tsconfig.json e devemos também definir mais 2 opções.
"allowJs": true, // permite-nos utilizar ficheiros .js e o tipo não será verificado nos mesmos
"skipLibCheck": true // não verifica os tipos nas bibliotecas que usamos
Com estas opções, podemos migrar de JS para TS passo a passo - ficheiro a ficheiro, mudando simplesmente a extensão de .js(x) para .ts(x) e adicionando tipos nos ficheiros. Utilizando esta abordagem, podemos evitar centenas ou milhares de erros de compilação assustadores.
Resumo
Penso que devemos utilizar Tipografia tão frequentemente quanto possívelporque é realmente benéfico a longo prazo. Ajuda a manter os projectos, aumenta a experiência dos programadores e torna a nossa base de código mais explícita e fiável.
No entanto, como sempre, há excepções - por exemplo, para uma simples página de destino se o JavaScript for utilizado apenas para alternar a classe ou outro caso simples, o Typescript não faz sentido. Além disso, temos de nos lembrar que, para tirar o máximo partido do Typescript, temos de aprender a utilizá-lo a um nível suficiente, e isso pode demorar algum tempo. Penso que continua a ser um investimento muito rentável do seu tempo.