Почему именно Luau?
Часть раздела Введение в Luau путешествия по Lua на Coddy — урок 2 из 73.
Система типов Luau предлагает три главных преимущества, которые делают разработку более безопасной и эффективной.
Раннее обнаружение ошибок: анализатор типов проверяет ваш код во время редактирования, до его запуска. Рассмотрим классическую ошибку в Lua — передачу nil туда, где ожидается число:
-- Lua: nothing warns you about this
local function calculateTotal(price, tax)
return price + tax
end
print(calculateTotal(nil, 0.1))
-- ✗ runtime error: attempt to perform arithmetic on nilВ обычном Lua этот сбой происходит только тогда, когда некорректный вызов наконец выполняется — возможно, прямо у ваших пользователей. Хуже того, Lua иногда полностью скрывает ошибку: "50" + 0.1 неявно преобразует строку и возвращает 50.1… пока в один день строка не окажется нечисловой. С аннотациями Luau ошибка подсвечивается незамедлительно:
local function calculateTotal(price: number, tax: number): number
return price + tax
end
calculateTotal(nil, 0.1) -- ✗ type error while editing: nil is not a numberУлучшенная читаемость кода: аннотации служат документацией. price: number точно сообщает вам и вашей команде, что функция ожидает и возвращает — без гаданий и копания в реализации.
Улучшенные инструменты разработки: поскольку редактор знает тип каждой переменной, вы получаете точное автодополнение, более безопасный рефакторинг и умную навигацию. Введите точку после типизированного значения, и редактор покажет точно то, что доступно.
Попробуйте сами
В этом уроке нет задания по программированию.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Введение в Luau
1Начало работы с Luau
Что такое Luau?Почему именно Luau?Ваш первый код на LuauПроверка типов и режимы ошибокИтоги: Введение в Luau4Работа с функциями
Типизация параметров и возвращаемых значенийТипизация анонимных функцийФункции, ничего не возвращающиеНеобязательные параметрыЗначения параметров по умолчаниюФункции с переменным числом аргументовОпределение типов функцийИтоги: типизированные функции2Базовые типы
Основные типы: num, str, boolТип 'any': лазейка в типизацииТип 'unknown'Nil и опциональные типыВывод типов на практикеЯвные аннотации типовИтоги: практика по базовым типам5Псевдонимы, объединения и пересечения
Псевдонимы типов для примитивовТипы объединения (Union)Работа с типами объединенияЛитеральные типыТипы пересечения (Intersection)Комбинирование псевдонимов типовИтоги: Сложные комбинации типов3Типизированные таблицы: Массивы и Map-словари
Типизированные массивыДобавление и чтение элементовЧто такое тип Map?Объявление и доступ к Map-словарямИтерация по таблицамТаблицы смешанной формыМногомерные типизированные массивыtable.unpack и VarargsИтоги: Массивы и Map-словари