Plano — Trilha TypeScript (3 fases)
Visão
Transformar o domínio Tecnologia/TypeScript (hoje: 1 monólito TypeScript.md de 1514 ln + 2 stubs) numa trilha 3-fases (Iniciado/Adepto/Magus) de notas atômicas estilo capítulo (~440-540 ln, diagramas Mermaid), no padrão das trilhas maduras. Alvo: prep pra entrevistas internacionais, eixo frontend-web.
A tese da trilha: TypeScript é um sistema de tipos estrutural e gradual colado sobre o JavaScript, que some em runtime. Essas três propriedades (estrutural, gradual, erased) explicam quase toda decisão de design e toda armadilha. A trilha vai do modelo mental até type-level programming e a fronteira type↔runtime.
Fonte e método
- Tronco a minerar:
TypeScript.md(1514 ln) cobre ~90% do material em forma de monólito. Cada nota da trilha minera a seção correspondente e a aprofunda ao nível capítulo (exemplo trabalhado, divulgação progressiva, Mermaid, registro Feynman). Decisão: o monólito é APOSENTADO (deletado) quando 100% absorvido — não vira tronco-com-callouts. Garantir que cada seção tenha destino numa nota antes de remover; redirecionar os inbound de[[TypeScript]]proindex(ou nota específica). - Biblioteca:
Biblioteca de TypeScript.mdé artefato próprio do domínio (recursos externos curados, par do Dicionário — ver project_artefatos_dominio). Mantida, atualizada se necessário; nunca absorvida na trilha. - MOC:
index.mdvira o MOC agrupado por fase. - Notas numeradas
01..NNflat emTecnologia/TypeScript/, frontmatterfase: Iniciado|Adepto|Magus, tagtypescript+ fase +entrevista; MOC agrupado por fase (padrão project_trilhas_fases_aprendizado).
Fronteiras (anti-duplicação — crítico)
| Tema | Dono | A trilha TS faz |
|---|---|---|
| TS aplicado a React (props, hooks, Context, forms tipados) | React/TypeScript com React/ (15 notas, já existe) | NÃO duplicar — linkar. A trilha TS para na linguagem |
| Teoria de sistemas de tipos (estrutural×nominal como conceito, ADTs) | Ciência/Paradigmas/13 Sistemas de tipos + 10 Tipos algébricos | Cobre a implementação CONCRETA do TS; linka a teoria |
| Inferência como teoria (Hindley-Milner) | Ciência/Compiladores/10 Análise semântica | Cobre a inferência do TS na prática; linka a teoria |
| Libs de validação runtime (Zod/Yup/Joi) | Tecnologia/JavaScript/Validação/ | Cobre o conceito da fronteira type↔runtime; linka as libs |
| Build/transpilação (esbuild, swc, bundling) | Tecnologia/Tooling e Build | Dona do tsconfig enquanto type-checker; defere a transpilação/bundle |
| Base da linguagem JS (closures, async, protótipos) | Tecnologia/JavaScript/JavaScript Fundamentals | Pressupõe; linka, não reensina |
| TS em Node/backend (Express/Fastify) | Tecnologia/Node | Menção leve em padrões; defere framework specifics |
Roster por fase (granular — 27 notas)
🟢 Iniciado (júnior — modelo mental e o sistema de tipos do dia a dia) — 10 notas
- O que é TypeScript: gradual, estrutural, apagado — por que tipos; TS como camada sobre JS; structural typing (o conceito que diferencia de Java/C#); erase-at-runtime; o compilador como type-checker. Liga JS Fundamentals + Paradigmas.
- Tipos primitivos, literais e a inferência — tipos básicos; deixar o TS inferir vs anotar; literal types; widening/narrowing de literais.
- Arrays, tuplas e
as const— arrays vs tuplas; readonly arrays;as conste seu efeito; tuplas nomeadas. any,unknownenever— o buraco doany;unknowncomoanyseguro;nevere seu papel; soundness e onde o TS abre mão dela de propósito.strictNullChecks: null, undefined e optional — o erro de um bilhão de dólares;?vs| undefined; optional chaining/nullish no nível de tipo.- Objetos:
interfacevstype— quando cada um; extending; index signatures; optional/readonly; excess property checking. - Union e intersection types —
|e&; modelar “ou”/“e”; perigos de intersection; narrowing de union (intro). - Discriminated unions e exhaustiveness — o pattern central: tagged unions pra modelar estado; checagem exaustiva com
never. - Type narrowing e type guards —
typeof/instanceof/in; discriminant; control flow analysis; custom type guards; assertion functions;!. - Tipando funções: assinaturas, overloads, contextual typing — parâmetros/retorno, optional/rest, overloads, tipando callbacks,
this.
🟡 Adepto (pleno — type-level programming e configuração) — 10 notas
- Generics: funções e constraints — o coração da reutilização tipada;
extendscomo constraint; inferência de type args. - Generics: defaults, classes e interfaces genéricas — default type params; classes/interfaces genéricas; variância na prática.
- Conditional types — tipos condicionais; distributive conditionals; padrões comuns.
infere extração de tipos —infer; extrair de funções/arrays/promises; reconstruirReturnType/Awaited.keyof,typeofe indexed access types — operadores de tipo;T[K]; derivar tipos de valores.- Mapped types e key remapping — mapear sobre keys;
+/-readonly,+/-?; key remapping (TS 4.1+) comas. - Template literal types — strings no nível de tipo;
Uppercase/etc.; padrões (rotas tipadas, keys derivadas). - Utility types — e como reconstruí-los —
Partial/Required/Pick/Omit/Record/Parameters/NonNullable; reconstruir a partir de mapped+conditional (consolida 13-16). - Enums,
constobjects e modelagem de constantes — por que evitarenum; union de literais (recomendado);as constobject pattern. tsconfige strict mode a fundo — o que cada flag destrictprotege;noUncheckedIndexedAccess,exactOptionalPropertyTypes;module/target/moduleResolutionna ótica de TIPOS. (Fronteira: build → Tooling e Build.)
🔴 Magus (senior — fronteiras, runtime, escala, produção) — 7 notas
- Modules: ESM, CJS e type-only imports — ESM×CJS no TS;
import type/export type;verbatimModuleSyntax; resolução de módulos. - Declaration files (
.d.ts) e o ecossistema de tipos —.d.ts; ambient declarations; DefinitelyTyped/@types; declaration merging a fundo; tipando libs sem tipos. - A fronteira type↔runtime: parse, don’t validate — tipos somem em runtime; o gap nos boundaries (API, env, form); parse-don’t-validate. Linka
Validação(Zod). - Type-driven design: branded types, Result e estados impossíveis — making impossible states unrepresentable; branded/nominal types; Result/Either; domain modeling com tipos.
- TypeScript em escala: performance do compilador e project references — por que a checagem fica lenta;
incremental; project references; monorepo. (Fronteira: bundling → Tooling.) - Lendo o compilador: erros comuns e como decifrar mensagens — anatomia de um erro de tipo; armadilhas frequentes; estratégias de debugging de tipos.
- TypeScript em entrevista — capstone: frases-chave, vocabulário PT→EN, perguntas comuns (structural typing,
unknownvsany, generics, narrowing, parse-don’t-validate), mapa de revisão.
Total: 27 notas (10/10/7). Range das trilhas maduras: 13-24; TS é linguagem profunda → mais granular justifica.
Sequência de execução
Status: ✅ Iniciado (1-10) FEITO (2026-06-23, commit 07c9730) — 10 notas ~415-685 ln, 3-5 Mermaid cada, MOC por fase. Monólito mantido. Próximo: Adepto (11-20). Status: ✅ Adepto (11-20) FEITO (2026-06-24) — 10 notas ~441-793 ln. MOC atualizado. Monólito mantido. Próximo: Magus (21-27), e aposentar o monólito. Status: ✅ Magus (21-27) FEITO + monólito APOSENTADO (2026-06-24, commit ac31faf) — 7 notas ~588-871 ln. ‘Na prática (MedEspecialista)’ preservada na nota 27. TRILHA COMPLETA: 27/27. 0 quebras reais.
- Iniciado (1-10) primeiro — base que o resto pressupõe; minerar as seções do monólito.
- Adepto (11-20) — type-level; a nota 18 (utility types) consolida 13-16.
- Magus (21-27) — fronteiras e produção; 23 coordena com
Validação. - Conforme escrevo, garantir destino de cada seção do
TypeScript.mde aposentá-lo (deletar) ao fim, redirecionando inbound de[[TypeScript]]; construir o MOCindex.mdagrupado por fase; manterBiblioteca de TypeScript.md(atualizar se houver recurso novo das notas). - Revisão entre fases (não despejar as 27 de uma vez).
Decisões fechadas (2026-06-23)
- Granularidade: roster granular de 27 notas (10/10/7) — aprovado “mais notas”.
- Monólito
TypeScript.md: aposentado (deletado) quando 100% absorvido; não vira tronco-com-callouts. Biblioteca de TypeScript.md: mantida como artefato de domínio (project_artefatos_dominio); atualizar se necessário, nunca absorver.