Typescript básico

Ao completar esta sessão o leitor terá compreendido a sintaxe básica da linguagem e o uso de ferramentas
necessárias ao desenvolvimento de aplicação em TypeScript.

A linguagem de programação TypeScript foi criada com o objetivo de oferecer uma opção a linguagem
JavasScript por meio de uma sintaxe mais adequada a programadores acostumados ao
paradigma da Orientação a Objetos. Um dos principais destaques da linguagem é o fato de permitir a
tipagem de variáveis, funções, metodos, classes e parâmetros que são validados em tempo de compilação.
O uso de tipos permite uma significativa redução de erros melhorando a qualidade do produto final.

É possível perceber a linguagem TypeScript como um super conjunto do JavaScript capaz de ser interpretado
pela maioria dos navegadores atuais.

Este tutorial de Typescript é adequado a desenvolvedores de aplicação com conhecimentos em Javascript mas sem a necessidade
de conhecimentos avançados na linguagem. Serão apresentados
alguns conceitos básicos e exemplos de aplicações transpiladas para serem executadas em navegadores
html.

O sufixo padrão para arquivos TypeScript é .ts e este será adotado neste tutorial.

Para este tutorial será necessário o uso da ferramenta tsc que pode ser instalada com o comando

npm install -g typescript

Para executar o código é necessário realizar a transpilação do código com o comando

tsc nome_do_arquivo.ts

O resultado deste comando, caso não exista nenhum erro no código, é um arquivo do tipo JavaScript com o mesmo nome do
arquivo .ts mas com o sufixo .js. Para executar a aplicação é possível utilizar um navegador web acessando uma página
html que deve importar o arquivo que contém o código Javascript.

<html>
    <head><title>TypeScript Exemplos</title></head>
    <body>
        <script src="nome_do_arquivo.js"></script>
    </body>
</html>

Vale destacar que códigos mais complexos podem apresentar
erros nos interpretadores dos navegadores, sendo necessária uma etapa adicional na geração do arquivo JavaScript (browserfição), passo
este que será apresentado ao final desta sessão.

Caso deseje testar a funcionalidade sem udo de navegador, é possível utilizar o comando:

node nome_do_arquivo.js

Tipos em Typescript

Como já comentado anteriormente uma das grandes diferenças entre Javascript e Typescript é a possibilidade de tipagem de
variáveis. Esta característica da linguagem permite prevenir erros difíceis de serem identificados pelo desenvolvedor.
Variáveis devem ser declaradas explicitamente como tais utilizando as palavras reservadas let e var, o uso de var é o mais
comum nas documentações de TypeScript mas neste trabalho serão utilizadas as duas palavras reservadas.
Não existe, no entanto, a necessidade de definir o tipo para uma variável mas quando esta recebe algum valor
não é possível tentar carrega-lá com outro tipo de dado como por exemplo:

let teste = 1;
teste = "Um";

Os tipos primitivos em Typescript são

boolean valores lógicos true e false (não são aceitos os valores 0 ou 1)
number valores numéricos inteiros ou decimais
string caracteres ou cadeia de caracteres, delimitados por aspas ou apostrofo;

Listas

Listas podem ser tipadas ou não, dependendo da forma com a mesma é instanciada:

var listaGenerica=['a', 1, false];
var listaNumerica:number[]=[1, 2, 2.5];
let listaArrayNumerico: Array<number>=[0,1,2,2.5];//Mesmo efeito da listaNumerica

**É possível utilizar tipo complexos nas variáveis definindo a mesma baseada em uma interface ou classe**

```javascript
interface Pessoa{
    nome:string;
    idade:number;
    juridica:boolean;
}

let pessoa : Pessoa;

Em Typescript é possível referenciar um objeto instanciado a partir de uma interface utilizando a notação
de objetos javascript como por exemplo:

var p:Pessoa = {firstName:"Fulano", lastName:"Beltrano"}

Loops e tomada de decisão

A sintaxe é a mesma utilizada em JavaScript, utilizando os simbolos {} para definição de blocos if..else ou
switch case para controle de fluxo; for(;;) e while() para loops.

É permitida a notação ternária para tomada de decisão de fluxos de execução de programas.

let tst:number = 1;
let result:string = tst > 0 ? "Maior que zero":"Menor que zero";

Funções

A implementação de funções também permite a tipagem de retorno podendo ser construídas utilizando diversas sintaxes.
O exemplo a seguir apresenta várias formas de representar uma função que calcule o quadrado de um número.

var pow21 = function(i: number): number { return i * i; }
var pow22 = function(i: number) { return i * i; }
var pow23 = (i: number): number => { return i * i; }
var pow24 = (i: number) => { return i * i; }
var pow25 = (i: number) =>  i * i;

console.log(pow21(2)+" "+pow22(2)+" "+" "+pow23(2)+" "+pow25(2)+" "+pow25(2));

A linguagem permite o uso de parâmetros opcionais utilizando o simbolo "?" junto ao nome da variável.

Módulos Externos e Namespace

Módulos e namespaces são utilizados para agrupar fragmentos de código como classes, interfaces e funções em uma unidade que pode ser exportada para outro módulos. No passado utilizava-se o conceito de módulos internos ao invés de namespace mas este tipo de uso é considerado obsoleto. Módulos permitem uma maior organização do código e geralmente são construído
em um arquivo para cada módulo ou namespace.

Classes

Este trabalho se limitará a apresentação de implementação dos conceitos de uso de classes se se alongar nas questões teóricas da orientação a objetos. Em TypeScript uma classe é definida pelo uso da palavra reservada class. A instanciação de um objeto é feito por meio da palavra reservada new seguida pelo nome da classe.

class Classe{
    umaPropriedade:string;
    umMetodo(umParametro:string){
        return umParametro;
    }
}

A sintaxe da definição de classes permite o uso de construtores por meio da palavra reservada constructor;

class Classe{
    constructor (parametroDoConstrutor: string){
        console.log("Hello classe");
    }
    umaPropriedade:string;
    umMetodo(umParametro:string){
        return umParametro;
    }
}

Para instanciar uma classe

```javascript
let minhaClasse:Classe = new Classe("Hello Classe");

console.log(minhaClasse.umMetodo("Hello metodo"));

O livro TypeScript Deep Dive, disponível em https://basarat.gitbooks.io/typescript/content/docs/why-typescript.html,
oferece uma visão completa sobre o uso da linguagem.

results matching ""

    No results matching ""