Kiểu giao
Thuộc phần Giới thiệu về Luau trong hành trình Lua của Coddy. Bài học 36 trên 80.
Các kiểu hợp nhất nói rằng một giá trị thuộc kiểu này hoặc kiểu khác. Kiểu giao chỉ theo hướng ngược lại: dấu và & kết hợp hình dạng bảng thành một kiểu có tất cả các trường của mỗi phần:
type HasName = { name: string }
type HasAge = { age: number }
type Person = HasName & HasAge
-- Person phải có CẢ HAI thuộc tính
local user: Person = {
name = "Alice",
age = 25,
}Bỏ age đi thì trình kiểm tra sẽ báo lỗi: kiểu giao là “và”, không phải chọn cái này hay cái kia. Cách này giúp bạn ghép các hình dạng lớn từ những phần nhỏ có thể tái sử dụng: định nghĩa các kiểu tập trung vào từng mối quan tâm riêng, rồi ghép chúng lại khi cần:
type HasEmail = { email: string }
type Employee = HasName & HasAge & HasEmail
Một lưu ý quan trọng về Luau: hãy lấy giao của các hình dạng bảng (và kiểu hàm), chứ không phải các kiểu nguyên thủy. Những thứ như number & string là vô nghĩa, vì không giá trị nào có thể đồng thời thuộc cả hai kiểu. Khi bạn muốn “hình dạng này cộng với hình dạng kia”, & là công cụ dành cho bạn.
Tất nhiên, khi chạy chương trình, một Person chỉ là một bảng Lua thông thường: kiểu giao chỉ tồn tại để trình kiểm tra sử dụng.
Thử thách
DễKết hợp hai cấu trúc nhỏ thành một.
- Viết
type HasName = {name: string},type HasAge = {age: number}vàtype Person = HasName & HasAge. - Tạo
local user: Person = {name = "Omar", age = 31}. - In ra
`Name: {user.name}, Age: {user.age}`.
Nhấn Run Code: đầu ra hiển thị Name: Omar, Age: 31.
Tự làm thử
-- 1) type HasName, type HasAge, type Person = HasName & HasAge
-- 2) local user: Person = {...}
-- 3) in ra dòng tên và tuổi
Tất cả bài học trong Giới thiệu về Luau
1Bắt đầu với Luau
Luau là gì?Tại sao nên dùng Luau?Đoạn code Luau đầu tiênKiểm tra kiểu và chế độ lỗiÔn tập: Giới thiệu về Luau4Làm việc với hàm
Kiểu dữ liệu cho tham số và giá trị trả vềKiểu dữ liệu cho hàm ẩn danhHàm không trả về giá trịTham số tùy chọnGiá trị tham số mặc địnhGiá trị Boolean mặc địnhHàm có số lượng tham số thay đổiĐịnh nghĩa kiểu hàmÔn tập: hàm có kiểu dữ liệu2Kiểu dữ liệu cốt lõi
Số, chuỗi và BooleanKiểu 'any': lối thoátKiểu 'unknown'Kiểu Nil và kiểu tùy chọnSuy luận kiểu trong thực tếChú thích kiểu tường minhÔn tập: luyện tập với kiểu dữ liệu cốt lõi5Bí danh kiểu, kiểu hợp và kiểu giao
Bí danh kiểu cho kiểu nguyên thủyKiểu hợpLàm việc với kiểu hợpKiểu literalKiểu giaoKết hợp bí danh kiểuÔn tập: kết hợp kiểu nâng cao3Bảng có kiểu: mảng và Map
Mảng có kiểuThêm và đọc phần tửKiểu Map là gì?Khai báo và truy cập MapDuyệt bảngBảng có cấu trúc hỗn hợpĐọc lướiTạo lướitable.unpackÔn tập: mảng và MapTự luyện tập: Trình biên dịch Luau online