Membangun Tipe dengan @Type
Bangun tipe baru secara terprogram.
Membangun Tipe dengan @Type adalah pelajaran Zig Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Zig Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Zig Academy mencakup 4 pelajaran total.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
The Reverse of @typeInfo
If @typeInfo turns a type into data, @Type turns data back into a real type. Together they let you reshape types at compile time. 🛠️
Feed It a Type.Info Value
@Type takes a std.builtin.Type value and produces the concrete type it describes. You hand it a description, it gives you a type.
const T = @Type(.{ .Int = .{ .signedness = .unsigned, .bits = 8 } });Build an Integer Type
The example above constructs u8 from scratch. Change bits to 16 and you get u16, all decided while the program compiles.
const U16 = @Type(.{ .Int = .{ .signedness = .unsigned, .bits = 16 } });Round-Trip a Type
Passing a type through @typeInfo then @Type returns the very same type. This proves the two builtins are exact inverses.
const Same = @Type(@typeInfo(u32));Describe a Struct as Data
To build a struct you fill in a StructField array. Each field needs a name, a type, alignment, and a default pointer.
const f = std.builtin.Type.StructField;Assemble the Struct Payload
Wrap your fields in a .Struct payload with a layout and an is_tuple flag, then hand the whole thing to @Type.
const info = .{ .Struct = .{
.layout = .auto,
.fields = my_fields,
.decls = &.{},
.is_tuple = false,
} };Generate a Fresh Struct Type
Call @Type on that payload and you get a brand-new struct type, built by your own logic rather than written by hand.
const Generated = @Type(info);Defaults Need a Comptime Pointer
A field's default_value is an optional const pointer to the value, or null when there is no default. The pointer must be comptime-known.
const dv: ?*const anyopaque = &@as(u8, 0);Build Enums and More
The same trick works beyond structs: the .Enum payload lets @Type synthesize enum types from a computed list of members.
Why Construct Types at All
Generated types power serializers and ORMs: derive a packed config or row type automatically instead of editing it by hand. ✨
Pair It with Reflection
The strongest pattern reads a type with @typeInfo, transforms the data, then rebuilds a new type with @Type, like adding a field.
Quick Check
You have a std.builtin.Type value describing a struct. What turns it into a usable type?
Recap
@Type builds real types from Type.Info data, the inverse of @typeInfo. Pair them to read, transform, and regenerate types. 🎯
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Membangun Tipe dengan @Type” gratis?
Ya — teks lengkap “Membangun Tipe dengan @Type” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Zig Academy, upgrade ke CoddyKit PRO. Kursus Zig Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Membangun Tipe dengan @Type”?
Bangun tipe baru secara terprogram. Kamu berlatih Zig Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Zig Academy?
Tidak diperlukan pengalaman sebelumnya. Zig Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Membangun Tipe dengan @Type” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Zig Academy ini?
Ya. Setiap pelajaran Zig Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Mencerminkan Field dengan @typeInfo
- Membangun Tipe dengan @Type
- Validasi Comptime dan @compileError
- Membuat Kode dengan comptime