arrow_back Voltar ao curso

Tipos Primitivos e Anotações

Fundamentos do XanaScript • Aula 4 de 20

Todo valor tem um tipo — a informação de que "tipo de coisa" ele é. O tipo decide o que você pode fazer com o valor (somar, concatenar, comparar) e evita erros bobos.

Tipos primitivos

Tipo Valor em XanaScript Descrição
eh-numero 10, 3.14, -5 números inteiros e decimais
eh-palavra "texto", 'texto' strings (texto)
vdd? verdadeiro, falso booleanos
eh-nada nulo ausência de valor
sla qualquer coisa tipo dinâmico (coringa)
js
cria n: eh-numero = 42
cria s: eh-palavra = "olá"
cria b: vdd? = verdadeiro
cria x: sla = "qualquer coisa"

Por que anotar o tipo?

XanaScript é opcionalmente tipado: você pode declarar sem tipo (cria n = 42) e a linguagem infere. Mas anotar traz dois benefícios:

  1. Documentação viva — quem lê o código sabe na hora o que esperar.
  2. Segurança — o compilador avisa se você tentar fazer algo incompatível.

Tipos de coleção

Tipo Valor Descrição
sus<T> [1, 2, 3] array (lista)
bagulho { a: 1 } objeto
crush<A, B> [1, "um"] par (tupla)
js
cria nums: sus<eh-numero> = [1, 2, 3]
cria obj: bagulho = { nome: "Ana", idade: 25 }
cria par: crush<eh-numero, eh-palavra> = [1, "um"]

Tipos próprios com tipo

Pra evitar repetir anotações, defina seu próprio tipo:

js
tipo Usuario {
  nome: eh-palavra,
  idade: eh-numero
}

cria u: Usuario = { nome: "Ana", idade: 25 }

Por que nulo é um tipo separado?

nulo representa "não há valor aqui". Separar "existe um número" de "não existe nada" força você a decidir o que fazer quando o valor não vier — é a base de sistemas que não quebram silenciosamente.

Checando tipos em runtime

js
tipo-de(42)          // eh-numero
tipo-de("oi")        // eh-palavra
instancia-de(x, Classe)  // verdadeiro se x é instância
Comentários