Menu
CoddyTech

Mở rộng cấu trúc

Thuộc phần Giới thiệu về Luau trong hành trình Lua của Coddy. Bài học 43 trên 80.

Các hình dạng có liên quan thường dùng chung trường. Mọi Admin cũng là một User; sao chép các trường dùng chung vào cả hai khai báo dễ khiến chúng khác nhau theo thời gian.

Bạn đã gặp toán tử giao & khi kết hợp các bí danh. Toán tử này hoạt động y hệt với các hình dạng. A & B có nghĩa là “có mọi thứ từ A và mọi thứ từ B”:

type User = {name: string, age: number}
type Admin = User & {level: number}

-- Admin giờ cần có: name, age VÀ level
local root: Admin = {name = "Root", age = 35, level = 9}

TypeScript cần từ khóa extends riêng cho các giao diện, còn Luau không cần gì mới: phép giao đã làm được việc đó. Bạn có thể nối nhiều phần:

type Contact = {email: string}
type Developer = User & Contact & {yearsExperience: number}

Đừng nhầm & với |: hợp A | B là hình dạng này hoặc hình dạng kia, còn giao A & B phải thỏa mãn cả hai cùng lúc. Và vì Admin có mọi trường của User, bạn có thể truyền một giá trị Admin ở bất cứ nơi nào cần một User.

challenge icon

Thử thách

Dễ

Mở rộng kiểu nhân viên thành kiểu quản lý.

  1. Viết type Employee = {name: string, department: string} và type Manager = Employee & {teamSize: number}.
  2. Tạo local teamLead: Manager = {name = "Alice Johnson", department = "Engineering", teamSize = 8}.
  3. In ra `{teamLead.name} manages {teamLead.teamSize} people`, sau đó in ra teamLead.department.

Nhấn Run Code: đầu ra hiển thị Alice Johnson manages 8 people và Engineering.

Tự làm thử

-- 1) khai báo kiểu Employee, rồi khai báo kiểu Manager = Employee & {...}
-- 2) khai báo local teamLead: Manager = {...}
-- 3) in ra dòng tóm tắt, rồi đến bộ phận

Tất cả bài học trong Giới thiệu về Luau

Tự luyện tập: Trình biên dịch Luau online