Executando verificação de segurança...
4

Aprender Typescript substitui o aprendizado de uma linguagem fortemente tipada?

Fala galera, beleza?
É o seguinte, estudo programação front-end há 2 anos e sou super apaixonado por JS...rsrsrsr, talvez pelo fato de ser a minha primeira linguagem.
Durante os últimos 4 meses tenho tentado encontrar estágios e na maioria das vezes sou rejeitado pelo motivo de não saber linguagens fortemente tipadas como Java, C# e por aí vai.
Então eu pergunto: Se eu aprender Typescript será o mesmo que aprender uma linguagem tipada?

Carregando publicação patrocinada...
4

Primeiro, vamos definir corretamente: https://pt.stackoverflow.com/a/21513/101. Eu sei que a internet está cheia do termo "fortemente tipado" em uso para algo diferente do seu significado. Entendendo errado, fica difícil explicar.

Java e C# até são fortemente tipadas, assim como tantas outras, como Python. Lua, e muitas que as pessoas acham que não são. Justamente porque o termo que querem usar é estaticamente tipada. Um exemplo contrário é C ser fracamente tipada, mesmo sendo estaticamente tipada, então as pessoas têm um entendimento errado.

Quase toda linguagem é tipada, acredito que todas de alto nível. Algumas têm apenas um tipo e tags, como costuma acontecer com linguagens de tipagem dinâmica.

JavaScript, junto com PHP, são das poucas linguagens fracamente tipadas. E justamente por isso são amplamente criticadas. Esse é o maior problema delas. Isso efetivamente traz problemas, ainda que administráveis.

na verdade tem uma pegadinha aí. As linguagens não costumam ser completamente uma coisa. C# por exemplo é quase toda estaticamente tipada, mas possui um escape e podem existir tipos dinâmicos para dar flexibilidade para a linguagem. E ela abre exceções na sua tipagem, por exemplo, misturando um valor válido de um tipo com null que é de outro tipo, e tem característica de tipagem fraca, de forma bastante limitada. Outras linguagens são um pouco assim. Algumas linguagens mais dinâmicas estão tendo a opção de serem um pouco mais estáticas (não costuma ficar tão bom por questões de compatibilidade, mas tem serventia).

TypeScript é complicada porque tem compatibilidade com JavaScript, então ela não tem como não dinâmica e fraca na tipagem. Mas ela oferece recursos para funcionar de forma estática e forte.

TypeScript é TypeScript. Outra linguagem é outra linguagem. Não é o mesmo que aprender uma ou outra.

Se você aprender uma linguagem com tipagem forte e estática, mesmo que opcionalmente ajuda entender bem esse estilo de tipagem, mas não é o mesmo que aprender a tipagem de outra linguagem, que pode ser parecida mas nunca idêntica. Tudo tem nuances e precisa aprender todas elas quando muda de tecnologia. Por isso a base é tão importante. Só assim você navega bem em tudo.

Eu tenho a impressão que é uma percepção errada que a rejeição seja porque não sabe outros tipos de linguagens. A não ser que só esteja indo atrás de vagas para essas linguagens, o que não faz sentido se sabe outra linguagem. Em geral as empresas não falam o real motivo da rejeição, pelo menos quando é algo que pode melindrar a pessoa. É uma forma de positividade tóxica, ela evita falar mal de você, impedindo você saber o que tem que melhorar, iludindo. Claro que não posso fazer afirmaçãoes específicas do que aconteceu, é só uma das possibilidades.

Aprender TypeScript te dará subsídios interessantes, mas continuará sendo rejeitado onde demanda Java ou C#. E também em locais onde exigem mais do que apenas saber usar ferramenta. Desenvolver software é muito mais que isso.

Eu acho que precisa organizar melhor o objetivo, rever a percepção que tem, para alcançar o que deseja. Não sei detalhes e não posso afirmar nada, mas sei que a pessoa terá muitos problemas se a percepção estiver errada. E isso anda bem comum, especialmente entre jovens que sempre foi comum, eu mesmo meti muito pés pelas mãos quando era.

Faz sentido para você?

Espero ter ajudado.


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).

2

Sobre tipagem, além do link que o @maniero indicou, tem também esse.

Além das definições, que os links explicam e são importantes (e muita gente confunde), também acho válido ressaltar a conclusão:

Ou seja, pra variar, não existe essa de que uma das opções é sempre melhor. Saiba as vantagens e desvantagens de cada uma, e avalie qual usar em cada situação (claro que pra saber quando usar, também precisa de experiência, mas de qualquer forma, agora vc tem mais informações para decidir melhor).

Falando por mim, acho que a tipagem estática ajuda em bases de código grandes (sendo que "grande" é subjetivo). Muita gente tem percebido o mesmo, o que ajuda a explicar a crescente popularidade e adoção do TypeScript, por exemplo. Além disso, a declaração de tipos explícitos têm sido adicionada em linguagens como PHP e Python.

1

Não seria a mesma coisa, mas seria próximo. Explico:
A tipagem no TS muitas vezes ocorre de forma presumida. Já em uma linguagem fortemente tipada ela tem sempre que ser declarada.

// TypeScript
const x = 10;
// Java
int x = 10;

No TS, a variável x vai assumir o tipo number automaticamente, mesmo sem ser declarado.
Já no Java, vemos que o tipo int obrigatoriamente deve ser declarado.

Fora isso, quando se trata de variáveis mais complexas, como Objetos ou Arrays, a tipagem no TS tende a ser mais complexo e bem mais restritiva que outras linguagens.