TypeScript Avançado + System Design Basics

Essa é a primeira semana do meu roteiro de estudos para ano de 2026, fazendo parte da FASE1: FUNDAMENTOS AVANÇADOS + CYBERSECURITY

Objetivos de Aprendizado

Oi, eu sou o Fernando e este material/curso/série foi feito pensando exatamente no que eu gostaria de ter dominado há uns anos atrás — e no que vejo fazer muita diferença hoje em dia nos projetos reais, nas entrevistas e na vida de times que entregam produto de verdade.

Ao final deste percurso, eu quero que você saia daqui se sentindo muito mais seguro e poderoso para lidar com TypeScript no nível sênior, escrever código limpo que escala e adotar práticas profissionais que realmente impressionam (e facilitam a vida) em empresas sérias.

O que pretendo dominar de forma prática e profunda no final dessa semana?:

Entender e aplicar com naturalidade os recursos mais poderosos do sistema de tipos:
Generics avançados (constraints, keyof, infer, distributive conditional types),
Conditional Types em profundidade (inferência condicional, tipos utilitários customizados, tipo “é isso ou aquilo”),
Mapped Types e Template Literal Types para criar tipos dinâmicos, transformações de objetos e utilitários extremamente expressivos,
Criação de tipos utilitários próprios que imitam os do próprio TypeScript (Partial, Required, Pick, Omit, etc.)

Design Patterns, vou implementar e questionar cada um na prática
Vou pegar os padrões clássicos, implementar em TypeScript moderno (com tipos fortes), testar em cenários reais e decidir sozinho quando eles valem a pena ou quando são só firula.
Meu plano
Factory (Method e Abstract Factory) – criar fábricas tipadas e flexíveis
Singleton – testar várias abordagens seguras em TS/JS e escolher a que eu mais confio
Observer / Pub-Sub – fazer na mão, comparar com EventEmitter e ver se vale usar libs modernas
E o principal: vou me perguntar sempre “isso resolve um problema de verdade ou estou forçando padrão por moda?”

Princípios SOLID – vou aplicar, quebrar e consertar na prática Chega de ler teoria bonita. Eu quero viver cada letra no código que eu escrevo sozinho:
Single Responsibility: refatorar códigos meus antigos e ver onde a responsabilidade vaza
Open/Closed: criar sistemas extensíveis sem tocar no código existente
Liskov Substitution: caçar exemplos reais onde herança quebra o princípio (e eu já caí nisso)
Interface Segregation: aplicar em APIs e componentes React/Next.js que eu crio
Dependency Inversion: praticar injeção de dependência manual e testar com containers leves
Vou debater comigo mesmo onde o SOLID ajuda de verdade e onde ele vira dogma que atrapalha a produtividade.

Quer ver um exemplo completo? O repositório do seu-cli está aberto:

github.com/seu-usuario/seu-cli