Встроенные аннотации структур
Часть раздела Введение в Luau путешествия по Lua на Coddy. Урок 39 из 80.
В Lua ты уже давно используешь таблицы как записи: local user = {name = "Ana", age = 20}. Ничто не мешает тебе неправильно написать имя поля, забыть его или сохранить строку там, где должно быть число. Ты узнаешь об этом, только когда запустится код.
Luau позволяет описать форму такой таблицы прямо в объявлении, перечислив каждое поле и его тип в фигурных скобках:
local user: {name: string, age: number} = {
name = "Ana",
age = 20,
}Сравни это с уже знакомыми тебе типами таблиц: {number} описывает массив, а {[string]: number} — отображение с любыми строковыми ключами. Форма задаётся точнее. Она называет каждое поле отдельно и задаёт для каждого поля собственный тип.
После объявления формы проверка типов сверяет с ней таблицу, пока ты редактируешь код. Отсутствующее поле или значение неправильного типа будет отмечено ещё до запуска кода:
local user: {name: string, age: number} = {
name = "Ana",
age = "twenty", -- ✗ ошибка типа: string не является числом
}Как и всегда, аннотация не добавляет поведения во время выполнения: таблица остаётся обычной таблицей Lua. Встроенные формы отлично подходят для разовых структур, которые ты не планируешь использовать повторно; в следующем уроке ты дашь формам имя.
Задание
ЛегкоОпиши запись о студенте прямо при её объявлении.
- Объяви
local student: {name: string, studentId: number} = {name = "Sarah Johnson", studentId = 12345}. - Выведи
student.name, затемstudent.studentId.
Нажми «Выполнить код»: в выводе появятся Sarah Johnson и 12345.
Попробуйте сами
-- 1) объявите student со встроенной аннотацией структуры
-- 2) выведите его name, затем studentId
Все уроки раздела Введение в Luau
1Начало работы с Luau
Что такое Luau?Почему именно Luau?Ваш первый код на LuauПроверка типов и режимы ошибокИтоги: Введение в Luau4Работа с функциями
Типизация параметров и возвращаемых значенийТипизация анонимных функцийФункции без возвращаемого значенияНеобязательные параметрыЗначения параметров по умолчаниюЗначения по умолчанию для булевых параметровФункции с переменным числом аргументовОпределение типов функцийПовторение: типизированные функции2Основные типы
Число, строка и булево значениеТип 'any': запасной выходТип 'unknown'Nil и опциональные типыВывод типов на практикеЯвные аннотации типовПовторение: практика с основными типами5Псевдонимы, объединения и пересечения
Псевдонимы типов для примитивовТипы объединения (Union)Работа с типами объединенияЛитеральные типыТипы пересечения (Intersection)Комбинирование псевдонимов типовИтоги: Сложные комбинации типов3Типизированные таблицы: массивы и отображения
Типизированные массивыДобавление и чтение элементовЧто такое тип отображения?Объявление и доступ к отображениямПеребор таблицТаблицы смешанной структурыЧтение сеткиСоздание сеткиtable.unpackПовторение: массивы и отображения6Типизация структуры таблиц
Встроенные аннотации структурПсевдонимы типов для структурНеобязательные свойстваСтруктурированные и произвольные таблицыРасширение структурДобавление методов в структурыМетоды с Self и двоеточиемИтоги: Определение структуры таблицПотренируйтесь самостоятельно: Онлайн-компилятор Luau