Técnico

TypeScript: Uma breve abordagem sobre o ‘JavaScript’ de amanhã

Hoje vamos falar um pouco de uma nova linguagem de programação que resolve um problema muito específico! Como desenvolver aplicações em grande escala com JavaScript?

O JavaScript foi originalmente construído para ser uma linguagem de script no lado do cliente para páginas Web’s e por muitos anos foi limitado a scripts manipuladores de eventos (DOM).Com isso, o JavaScript tem muitas limitações necessárias para escrever e manter aplicações em larga escala, de modo que os componentes da aplicação funcionem de forma independente e que possam ser mantidos e modificados de forma produtiva.

Com o HTML 5, ficou meio que ‘implícito’ desenvolvermos e entregarmos aplicações cada vez mais ricas para os usuários. Devido essa necessidade, a criação de aplicações em JavaScript de grande escala é uma tarefa difícil e bem trabalhosa! Mas não se preocupem, pois o TypeScript torna esta tarefa bem mais fácil.

Afinal, o que é TypeScript? TypeScript é uma linguagem de programação criada e mantida pela Microsoft. Foi projetada para o desenvolvimento de grandes aplicações em JavaScript tanto no lado cliente ou servidor (Node.js). Basicamente é um subconjunto de JavaScript que acrescenta tipagem de objetos (opcional), estrutura de classes e é totalmente baseada em programação orientada a objeto.

A tipagem estática lhe permite realizar muitas operações de refatoração avançadas, como renomeação global, pesquisa de referência e auto-complete de código.

CTA-ebook-transformação-digital

Uma coisa muito interessante é que TypeScript começa e termina com JavaScript. Isso mesmo, quem já lidou com SASS sabe como isso é importante, já que SASS é totalmente compátivel com CSS. Você pode simplesmente pegar um código .js e jogar em uma arquivo .ts e sair adaptando o que quiser. Já quem está habituado a trabalhar com o CoffeScript, sabe que não é muito divertido ficar convertendo código de um ponta para outra.

Bom, vamos deixar um pouco de lado a teoria e por a mão na massa!

PRÉ-REQUISITOS PARA FUNCIONAMENTO DO TYPESCRIPT

NODE para MAC-OS

brew install node

NODE para distribuições LINUX

Você precisa instalar duas dependências antes de instalar o Node.js e NPM (Ruby e GCC).

Ruby 1.8.6 ou mais recente e GCC 4.2 ou mais recente

Ubuntu ou distribuições Linux baseadas em Debian, execute o seguinte comando em seu terminal:

sudo apt-get install onda build-essential git m4 ruby texinfo libbz2-dev libcurl4-openssl-dev libexpat-dev libncurses-dev zlib1g-dev

Para distribuições Linux baseadas Fedora execute o seguinte comando em seu aplicativo de terminal:

sudo yum groupinstall ‘Ferramentas de desenvolvimento’ && sudo yum install onda ruby git m4 texinfo bzip2-devel curl-devel expat-devel ncurses-devel zlib-devel

Homebrew

Homebrew é um gerenciador de pacotes originalmente para o Mac, mas ele já foi portado para o Linux como Linuxbrew, tornando a instalação de software mais open-source (como Node) tão simples como escrever: brew install node

Você pode aprender mais sobre Homebrew no site Homebrew e Linuxbrew no site da Linuxbrew.
Para instalar o Homebrew para Linux, abra o aplicativo de terminal e cole na linha de comando:

rubi -e “$ (onda -fsSL https://raw.githubusercontent.com/Homebrew/linuxbrew/go/install)”

Uma vez que Linuxbrew esteja instalado, você precisará adicionar as 3 linhas seguintes ao seu .bashrc ou arquivo .zshrc:

export PATH = “$ HOME / .linuxbrew / bin: $ PATH”
export MANPATH = “$ HOME / .linuxbrew / share / man: $ MANPATH”
INFOPATH exportação = “$ HOME / .linuxbrew / share / info: $ INFOPATH”

INSTALAÇÃO DO TYPESCRIPT:

npm install -g typescript

O -g significa que ele será instalado em seu sistema globalmente, para que o compilador TypeScript possa ser usado em qualquer um dos seus projetos.

Teste se o TypeScript está instalado corretamente, digitando tsc -v no seu terminal ou prompt de comando. Você deverá ver a versão do TypeScript na tela ex:
message TS6029: Version 1.6.2.

Para obter ajuda sobre possíveis argumentos você pode digitar: -h tsc ou apenas tsc

EXECUTANDO E COMPILANDO EM TYPESCRIPT

O comando abaixo compila um arquivo .ts para .js, gerando assim um novo arquivo app.js

tsc app.ts

Para compilar vários arquivos utilize o seguinte comando:

tsc app.ts another.ts outher.ts

O resultado será a criação de três novos arquivos app.js another.js e outher.js

Utilize o caracter * para compilar todos arquivos ts de uma determinada pasta:

tsc *.ts

Gerando um único arquivo .js para sua aplicação: isto reduz um número significativo de requisições http, para isso utilize –out conforme abaixo:

tsc *.ts –out app.js

Ficou um pouco trabalhoso ficar sempre recompilando na mão esses arquivos, certo? Desta forma então utilizamos o –watch

tsc *.ts –out app.js –watch

Toda vez que existir uma atualização, o TypeScript irá recompilar de forma automática todos os arquivos .ts para .js em um único arquivo chamado app.js

TIPAGEM

Como dito anteriormente, a tipagem de objetos é opcional, o que torna a linguagem mais flexível, onde você não precisa tipar tudo. Te dá toda liberdade para tipar o que quiser e onde for mais necessário. Vejamos um exemplo:

var meuNome:string = "Lucas Rodrigues";
function printNome(nome: string){
console.log(nome);
};
printNome(meuNome);

DEFININDO UM INTERFACE

interface Contato {
nome: string,
email: string,
telefone: string
}
var agenda: Contato[] = [];
var contato = {
nome: 'Lucas Rodrigues',
email: 'lucas.rodrigues@redspark.io',
telefone: '11 5506-5154'
};
agenda.push(contato);

Umas das vantagens é que quando estivermos digitando o agenda.push, a IDE terá opção para utilizar o auto-complete e mostrar os atributos utilizados na interface.

Outra vantagem é que quando estivermos definindo um objeto do tipo ‘contato’ e esquecermos de definir algum de seus atributos, a IDE poderá nos avisar:

Argument of type ‘{nome: string, email:string}’ is not assignable to parameter of type ‘Contato’. Property ‘telefone’ is missing…

DEFININDO CLASSES

interface Coordenada {
x: number,
y: number
}
Class Monstro{
nome: string,
posicaoInicial: Coordenada
constructor(nome,posicaoInicial){
this.nome = nome;
this.posicaoInicial = posicaoInicial;
}
}
var monstro = new Monstro('Alienigena',{x: 0, y: 0});

ou definir de seguinte forma

interface Coordenada {
x: number,
y: number
}
Class Monstro{
constructor(public nome: string,public posicaoInicial: Coordenada){
}
}
var monstro = new Monstro('Alienigena',{x: 0, y: 0});

Espero que este post tenha despertado a vontade de se aprofundar mais no aprendizado e quem sabe dar o pontapé incial para que vocês construam suas próprias aplicações utilizando TypeScript.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Compartilhe isso: