Menu
CoddyTech

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.

challenge icon

Tantangan

Mudah

Gabungkan dua bentuk kecil menjadi satu.

  1. Tulis type HasName = {name: string}, type HasAge = {age: number} dan type Person = HasName & HasAge.
  2. Buat local user: Person = {name = "Omar", age = 31}.
  3. 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

Latihan sendiri: Compiler Luau online