Já passou acidentalmente um product_id para uma função que esperava um user_id? Se ambos são int, o type checker não reclama, mas a sua lógica quebra de forma silenciosa e perigosa. Na Aula 15 do nosso curso de Type Hints, vamos resolver esse problema com uma das ferramentas mais elegantes e sutis do typing: o NewType.
Vamos descobrir como criar tipos nominais distintos que existem apenas para o type checker, garantindo que você nunca mais misture tipos primitivos com significados diferentes. E o melhor de tudo? Com praticamente zero impacto na performance do seu código em produção.
Esta é uma aula fundamental sobre como usar o sistema de tipos para prevenir bugs lógicos, e não apenas erros de sintaxe.
Nesta aula da nossa playlist completa sobre Type Hints no Python, você vai aprender:
– O que é NewType e por que ele é superior a um TypeAlias para garantir a segurança entre tipos.
– Como criar tipos distintos como UserId e PostId a partir de int e impedir que eles sejam misturados.
– A “pegadinha” do NewType: o que ele realmente faz (ou NÃO faz) em tempo de execução (runtime).
– Por que NewType se comporta como uma “função de identidade” e como isso afeta seu código.
– Como usar typing.cast para fazer a “ponte” entre dados do mundo real (ex: um int vindo do banco de dados) e seus novos tipos seguros.
Se você quer adicionar uma camada extra de robustez e clareza semântica ao seu código, esta aula é essencial.
E lembre-se: Type Hint é igual a Type Annotation (tipagem no Python).
Este vídeo é parte de uma playlist, essa é a DÉCIMA QUINTA aula. Segue o link da playlist para acompanhar:
Link do repositório:
https://github.com/luizomf/typehints_python
Meus Cursos: https://www.otaviomiranda.com.br/
Newsletter: https://luizomf.substack.com/
Capítulos
00:00:00 – Introdução ao NewType no Python
00:01:10 – Quando usar NewType ou Classes?
00:03:27 – Como usar NewType para tipos distintos?
00:05:28 – NewType NÃO gera uma Classe ou Subclasse em Runtime
00:05:28 – NewType NÃO gera uma Classe ou Subclasse em Runtime
00:08:53 – O que o NewType NÃO É?
00:13:38 – NewType não pode ser Generic, nem TypeAlias
00:20:50 – Use cast para Type Cast do NewType para o tipo adequado
#Python #TypeHints #CleanCode #SoftwareArchitecture #PythonBrasil



コメント
Sei que o exemplo foi pra demonstrar NewType, mas só adicionando: Tem um jeito de escrever esse código e ter os tipos certos sem deixar na mão de outro dev pra usar cast(): é só anotar fn com TypeVar’s em vez de usar NotGenericNT’s.
Nesse caso, o type checker vai ter informação suficiente pra saber os tipos de value1 e value2 sem cast; e ainda vai te ajudar a manter a propriedade que fn sempre retorna o mesmo tipo que recebe como argumento, evitando algum erro de implementação em fn().