You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-[Trabalhando com Unions](#trabalhando-com-unions)
37
+
-[Aliases para tipos (Type Aliases)](#aliases-para-tipos-type-aliases)
39
38
-[Interfaces](#interfaces)
39
+
-[Type Assertions](#type-assertions)
40
+
-[Enums](#enums)
41
+
-[Primitivos menos comuns](#primitivos-menos-comuns)
40
42
-[Projetos de exemplo neste repositório](#projetos-de-exemplo-neste-repositório)
41
43
-[Bibliografia](#bibliografia)
42
44
<!--toc:end-->
@@ -516,7 +518,7 @@ names.forEach((name) => {
516
518
});
517
519
```
518
520
519
-
## Tipando objetos
521
+
###Tipando objetos
520
522
521
523
Logo após os tipos primitivos, são os tipos com os quais mais se lida ao usar TypeScript, pois eles correspondem a qualquer valor em JS que possua propriedade.
522
524
@@ -534,7 +536,7 @@ const route = {
534
536
printCoord(route);
535
537
```
536
538
537
-
### Propriedades opcionais (`?`)
539
+
####Propriedades opcionais (`?`)
538
540
539
541
**OBS.: para especificar um tipo opcional, use `?`.**
**OBS.: Em TS, ao usar um parâmetro opcional, primeiro cheque se ele é `undefined`.**
555
557
556
-
## Union Types
558
+
###Union Types
557
559
558
560
A definição de Unions é combinação de tipos. Então, se você cria um tipo formado por dois ou mais tipos, você tem um Union. Eles representam valores que podem ser de qualquer um desses tipos. Os tipos pertencentes a Unions são chamados de _membros_.
559
561
560
-
### Definição vagamente matemática
562
+
####Definição vagamente matemática
561
563
562
564
Eu entendo os Unions num sentido vagamente matemático. União como uma união/intersecção de determinado conjunto mesmo. Se uma função, por exemplo, aceita um parâmetro que pode ser tanto `string` quanto `number`, é porque o tipo esperado dela encontra-se justamente na intersecção entre strings e números.
563
565
564
566
Essa noção é vaga porque eu não sou matemático. Se essa minha definição fizer sentido, nem que seja mnemônico, vou adotá-la. Se não fizer sentido nenhum, eu apago e tento fixar o conceito de outra forma.
565
567
566
-
### Trabalhando com Unions
568
+
####Trabalhando com Unions
567
569
568
570
Seguindo essa definição, o TypeScript só permite uma operação que for comum a todos os membros do union. Portanto, se um union type conter `string | number`, você não pode chamar um `.length` ou um `.toUpperCase()` nele, por exemplo.
Quando você precisa usar um tipo cujo qual o TS não sabe nada a respeito, você pode fazer _type assertions_. Eles são removidos posteriormente pelo compilador, então o TS não é capaz de checar a nulidade deles caso você cometa um typo.
Descrevem um valor que poderia ser um conjunto/set de possíveis constantes nomeadas. Não estão relacionados a tipos, diferentemente de todas as outras adições que o TS faz no JS — ou seja, os Enums vão para o runtime pós-compilação. É uma feature do TS que foi passada para o JS. É um assunto mais específico que vai ficar de fora destes estudos iniciais. Aqui estamos focando em ficar proficientes em tipos em TS.
688
+
689
+
### Primitivos menos comuns
690
+
691
+
Bigint e Symbol. Segunda vez que tangencio o symbol e ainda acho que eles são como magia de bruxo: todos sabem que existe, mas ninguém nunca viu. A primeira vez foi no curso [Just JavaScript](https://github.com/divertimentos/just-javascript?tab=readme-ov-file#symbols) do Dan Abramov.
692
+
693
+
Segundo a documentação do TS, "O Symbol é um primitivo em JS usado para criar uma referência global única através da função `Symbol()`".
694
+
695
+
De vez em quando é interessante a experiência de contrariar os ensinamentos sobre culhão e brio do prof. Clóvis de Barros e conseguir entender 0% de uma explicação que você releu 35 vezes.
696
+
697
+
```typescript
698
+
const firstName =Symbol("Melkor");
699
+
const lastName =Symbol("Melkor");
700
+
701
+
if (firstName===lastName) {
702
+
// O TS pistola na hora e eu não faço ideia do porquê.
703
+
}
704
+
```
705
+
706
+
Já o `bigint` é um novo tipo primitivo em JS usado para representar números realmente grandes.
0 commit comments