Bentuk vs. Tabel Longgar
Termasuk bagian Pengantar Luau dalam perjalanan Lua di Coddy. Pelajaran 40 dari 73.
Sekarang kamu punya dua cara untuk menggunakan tabel record: cara longgar yang selalu kamu gunakan di Lua, dan bentuk yang dideklarasikan. Ada baiknya kamu berhenti sejenak untuk melihat manfaat masing-masing.
Tabel longgar menerima apa saja. Fleksibilitas itu ada harganya: salah mengeja field (user.nmae) membuatmu diam-diam mendapatkan nil; lupa mengisi field membuat bug muncul jauh di tempat lain, saat runtime, dalam kode apa pun yang pertama kali menyentuh bagian yang kosong:
local user = {name = "Ana", age = 20}
print(user.nmae) -- tabel fleksibel: diam-diam mencetak nilDeklarasikan sebuah bentuk, dan kesalahan itu akan diketahui saat kamu mengedit, bukan saat runtime. Pemeriksa menandai salah ketik begitu kamu menulisnya, editor bisa melengkapi nama field secara otomatis, dan deklarasi type juga berfungsi sebagai dokumentasi tentang isi tabel:
type User = {name: string, age: number}
local user: User = {name = "Ana", age = 20}
print(user.nmae) -- ✗ error tipe: kunci 'nmae' tidak ditemukan di UserJika kamu berasal dari TypeScript, perlu diketahui bahwa Luau tidak memiliki kata kunci interface: type menangani semua bentuk. Tidak ada juga "penggabungan deklarasi": mendeklarasikan dua tipe dengan nama yang sama dalam lingkup yang sama adalah error, jadi setiap bentuk memiliki tepat satu definisi.
Bentuk Luau bersifat struktural: tabel apa pun dengan field yang tepat dan tipe yang tepat akan cocok, di mana pun atau dengan cara apa pun tabel itu dibuat. Tabel longgar juga tetap berguna: skrip singkat dan data yang benar-benar dinamis tidak memerlukan bentuk yang dideklarasikan. Namun, untuk apa pun yang diteruskan antar fungsi, sebuah bentuk dapat menangkap kesalahan selagi masih mudah diperbaiki.
Coba sendiri
Pelajaran ini tidak memiliki tantangan kode.
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pengantar Luau
1Memulai dengan Luau
Apa Itu Luau?Mengapa Menggunakan Luau?Kode Luau PertamamuPemeriksaan Tipe dan Mode ErrorRangkuman: Pengenalan Luau4Bekerja dengan Fungsi
Menentukan Tipe Parameter dan Nilai KembalianMenentukan Tipe Fungsi AnonimFungsi yang Tidak Mengembalikan NilaiParameter OpsionalNilai Default ParameterFungsi VariadikMendefinisikan Tipe FungsiRangkuman: Fungsi Bertipe2Tipe Inti
Tipe Dasar: num, str, boolTipe 'any': Jalan Keluar DaruratTipe 'unknown'Nil & Tipe OpsionalInferensi Tipe dalam PraktikAnotasi Tipe EksplisitUlasan: Latihan Tipe Inti5Alias, Union, dan Intersection
Alias Tipe untuk Tipe PrimitifTipe UnionMenggunakan Tipe UnionTipe LiteralTipe IntersectionMenggabungkan Alias TipeRekap: Kombinasi Tipe Lanjutan3Tabel Bertipe: array dan Map
array BertipeMenambahkan dan Membaca ElemenApa Itu Tipe Map?Mendeklarasikan dan Mengakses MapMelakukan Iterasi pada TabelTabel dengan Bentuk Campuranarray Bertipe Multidimensitable.unpack dan VarargsRingkasan: array dan Map6Pengetikan Bentuk Tabel
Anotasi Bentuk Secara InlineAlias Tipe untuk BentukProperty OpsionalBentuk vs. Tabel LonggarMemperluas BentukMenambahkan method ke BentukMethod self dan Method Titik DuaUlasan: Mendefinisikan Bentuk TabelLatihan sendiri: Compiler Luau online