O TypeScript é um super-set do JavaScript, dando a ele o "poder" de adicionar tipagens.
-
Plugins:
- JavaScript ES6+
- Live Server
-
Instalações necessárias:
-
Node.js Baixe em Node Download
-
TypeScript
Abra um terminal ou cmd
use o comando:
node install typescript -g
-
Visual Studio Code
Baixe em Code Download
-
Anotações em variáveis, para explicitar seu tipo.
Exemplo: const produto: string = "Caixa";
Para mais exemplos veja na pasta 02_Modulo
É quando o typescript já sabe qual é o tipo e por baixo dos panos realiza a anotação do mesmo.
exemplo: const produto = "Caixa";
Temos String , number e boolean.
string usado para cadeias de strings.
number usado para valores numéricos.
boolean usado para valores como true ou false.
Não podemos confundir string com String, number com Number e boolean com Boolean, pois com a letra inicial maiúscula é a função construtora de respectivos tipos.
Podemos definir para uma variável mais de um tipo para ser atribuído, dando poder de escolha. Exemplo:
const valorEsponja : string | number = '200';
Note o operador |
, este é usado para passarmos mais valores. Podendo formar uma cadeia de tipos.
Acompanhe o exercício no módulo 02 para mais detalhes.
Type, palavra chave reservada para criar um 'alias' para um tipo customizado.
Exemplo:
- Posso 'tipar' um objeto desta maneira abaixo, para informar o que é esperado por ele.
type ObjectProps = {
nome: string;
valor: number;
ativo: boolean
}
// E usar da seguinte maneira
function validaUsuario(user: ObjectProps) {
console.log(`User: ${user.nome}, está: ${user.ativo ? 'ativo' : 'inativo'}`);
}
validaUsuario({
nome: 'Lucas',
valor: 1,
ativo: true
})
Interface
Palavra reservada para criação de interfaces, sua aplicação é parecida com a type porém interfaces podem implementar outras interfaces, herdando características. Mais para frente do curso será explicado.
Exemplo usando interface:
interface iDataEmpresaProps {
nome: string;
fundacao: number;
pais: string;
}
interface iDataProps {
nome: string;
preco: number;
descricao: string;
garantia?: string;
seguroAcidentes?: string;
empresaFabricante: iDataEmpresaProps;
empresaMontadora: iDataEmpresaProps;
}
async function fetchProduct() {
const response = await fetch("https://api.origamid.dev/json/notebook.json");
const data = await response.json();
showProduct(data);
console.log(data);
}
fetchProduct();
function showProduct(data: iDataProps) {
document.body.innerHTML = `
<div>
<h2>${data.nome}</h2>
<p>R$ ${data.preco} </p>
<p>${data.descricao} </p>
<div>
<h3>Fabricante: ${data.empresaFabricante.nome}</h3>
</div>
<div>
<h3>Montadora: ${data.empresaMontadora.nome}</h3>
</div>
</div>
`;
}
Para lidar com arrays, podemos especificar o tipo destas maneiras:
const livros : string[] = ['Konto', 'Domnen', 'Harry Potter'];
ou
const livros : Array<string> = ['Konto', 'Domnen', 'Harry Potter'];
Null
null é um tipo primitivo que representa a ausência de valor. É comum em funções do DOM que fazem uma busca, retornarem null quando não são bem sucedidas.
Podemos prevenir tipos null usando if
e ou optional chaining
const button = document.querySelector('button');
if(button) {
button.click();
}
if(button !== null){
button.click();
}
button?.click();
É o operador ?
usado para casos onde podemos checar previamente se um propriedade existe.
Exemplo:
button?.click()
Se o button existir e for diferente de null ou undefined, poderemos acessar o método click, evitando erros na compilação.
Typeof
Usamos para definir se o retorno é um tipo esperado, como string
, number
,boolean
ou object
Exemplos no 02_Modulo.
Instanceof
Com a palavra-chave instanceof podemos verificar se um objeto é uma instância (foi construído ou herda) de uma função construtora (class).
Exercício no módulo 03
Um tipo genérico é uma forma de declararmos um parâmetro para a nossa função, classe ou interface. Esse tipo poderá ser indicado no momento do uso da função através de <Tipo>
.
Acompanhe os exemplos no 03_Modulo;