Tipe Intersection
Termasuk bagian Pengantar Luau dalam perjalanan Lua di Coddy. Pelajaran 36 dari 80.
Union menyatakan bahwa suatu nilai bertipe satu hal atau hal lain. Tipe irisan mengarah ke sebaliknya: ampersan & menggabungkan bentuk tabel menjadi tipe yang memiliki semua field dari setiap bagiannya:
type HasName = { name: string }
type HasAge = { age: number }
type Person = HasName & HasAge
-- Person harus memiliki KEDUA field
local user: Person = {
name = "Alice",
age = 25,
}Jika age tidak disertakan, pemeriksa akan mengeluh: irisan berarti "dan", bukan memilih salah satu. Dengan begitu, kamu bisa menyusun bentuk yang besar dari bagian-bagian kecil yang dapat digunakan kembali: definisikan tipe khusus untuk hal yang berbeda, lalu gabungkan sesuai kebutuhan:
type HasEmail = { email: string }
type Employee = HasName & HasAge & HasEmail
Satu hal penting tentang Luau: iriskan bentuk tabel (dan tipe fungsi), bukan tipe primitif. Sesuatu seperti number & string tidak bermakna, karena tidak ada nilai yang bisa memiliki kedua tipe itu sekaligus. Saat kamu ingin "bentuk ini ditambah bentuk itu", & adalah alat yang kamu perlukan.
Saat program berjalan, tentu saja, Person hanyalah tabel Lua biasa: irisan hanya ada untuk pemeriksa.
Tantangan
MudahGabungkan dua bentuk kecil menjadi satu.
- Tulis
type HasName = {name: string},type HasAge = {age: number}dantype Person = HasName & HasAge. - Buat
local user: Person = {name = "Omar", age = 31}. - Cetak
`Name: {user.name}, Age: {user.age}`.
Tekan Jalankan Kode: output menampilkan Name: Omar, Age: 31.
Coba sendiri
-- 1) tipe data HasName, tipe data HasAge, tipe data Person = HasName & HasAge
-- 2) variabel lokal user: Person = {...}
-- 3) tampilkan baris nama dan usia
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
Mengetik Parameter dan Nilai KembalianMengetik Fungsi AnonimFungsi Tanpa Nilai KembalianParameter OpsionalNilai Parameter DefaultNilai Default untuk BooleanFungsi VariadikMendefinisikan Tipe FungsiUlasan: Fungsi Bertipe2Tipe Inti
Number, String, dan BooleanTipe 'any': Jalan KeluarTipe 'unknown'Nil dan 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 & map
Array BertipeMenambahkan dan Membaca ElemenApa Itu Tipe Map?Mendeklarasikan dan Mengakses MapMenelusuri TabelTabel dengan Bentuk CampuranMembaca GridMembuat Gridtable.unpackRangkuman: array dan mapLatihan sendiri: Compiler Luau online