Construindo tipos com @Type
Construa novos tipos de forma programática.
Construindo tipos com @Type é uma aula grátis de Zig Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Zig Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Zig Academy inclui 4 aulas no total.
O inverso de @typeInfo
Se @typeInfo transforma um tipo em dados, @Type transforma os dados novamente em um tipo real. Juntos, eles permitem remodelar tipos em tempo de compilação. 🛠️
Fornecer um valor Type.Info
@Type recebe um valor std.builtin.Type e produz o tipo concreto que ele descreve. Você fornece uma descrição e ele devolve um tipo.
const T = @Type(.{ .Int = .{ .signedness = .unsigned, .bits = 8 } });Construir um tipo inteiro
O exemplo acima constrói u8 do zero. Altere bits para 16 e você obterá u16, tudo decidido enquanto o programa é compilado.
const U16 = @Type(.{ .Int = .{ .signedness = .unsigned, .bits = 16 } });Fazer uma conversão de ida e volta de um tipo
Passar um tipo por @typeInfo e depois por @Type devolve exatamente o mesmo tipo. Isso prova que os dois recursos integrados são inversos exatos.
const Same = @Type(@typeInfo(u32));Descrever uma Struct como Dados
Para criar uma struct, preencha uma matriz de StructField. Cada campo precisa de um nome, um tipo, um alinhamento e um ponteiro padrão.
const f = std.builtin.Type.StructField;Montar o Payload da Struct
Envolva os campos em um payload .Struct com um layout e um sinalizador is_tuple, depois passe tudo para @Type.
const info = .{ .Struct = .{
.layout = .auto,
.fields = my_fields,
.decls = &.{},
.is_tuple = false,
} };Gerar um Tipo de Struct Novo
Chame @Type com esse payload para obter um tipo de struct totalmente novo, criado pela sua própria lógica em vez de escrito manualmente.
const Generated = @Type(info);Os Valores Padrão Precisam de um Ponteiro Comptime
O default_value de um campo é um ponteiro const opcional para o valor, ou null quando não há valor padrão. O ponteiro precisa ser conhecido em comptime.
const dv: ?*const anyopaque = &@as(u8, 0);Criar Enums e Muito Mais
O mesmo recurso funciona além de structs: o payload .Enum permite que @Type sintetize tipos enum a partir de uma lista calculada de membros.
Por que Construir Tipos
Tipos gerados dão suporte a serializadores e ORMs: derive automaticamente um tipo de configuração ou de linha compactado, em vez de editá-lo manualmente. ✨
Combinar com Reflexão
O padrão mais poderoso lê um tipo com @typeInfo, transforma os dados e depois reconstrói um novo tipo com @Type, por exemplo, adicionando um campo.
Verificação Rápida
Você tem um valor std.builtin.Type que descreve uma struct. O que o transforma em um tipo utilizável?
Recapitulação
@Type cria tipos reais a partir de dados Type.Info, sendo o inverso de @typeInfo. Combine os dois para ler, transformar e regenerar tipos. 🎯
Perguntas Frequentes
A aula “Construindo tipos com @Type” é grátis?
Sim — o texto completo de “Construindo tipos com @Type” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Zig Academy, atualize para CoddyKit PRO. O curso de Zig Academy inclui 4 aulas no total.
O que vou aprender em “Construindo tipos com @Type”?
Construa novos tipos de forma programática. Você pratica Zig Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Zig Academy?
Nenhuma experiência prévia é necessária. Zig Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Construindo tipos com @Type”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Zig Academy?
Sim. Cada aula de Zig Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Refletindo campos com @typeInfo
- Construindo tipos com @Type
- Validação em tempo de compilação e @compileError
- Gerando código com comptime