Типы dynamic и Object
Основные типы Dart и случаи их применения
«Типы dynamic и Object» — бесплатный урок Dart Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Dart Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Dart Academy содержит 4 уроков всего.
В Dart есть и верхние типы
Иногда нужна переменная, способная хранить любое значение. В Dart есть два таких верхних типа: Object и dynamic.
Object безопасно хранит любое значение
Object может хранить любое ненулевое значение, но Dart всё равно проверяет каждый вызов метода в соответствии с типом Object.
Object thing = 42;
thing = "now text";Object ограничивает доступные методы
При использовании Object доступны только методы, общие для всех значений, например toString. Перед использованием поведения, специфичного для типа, необходимо выполнить приведение.
Object o = "hi";
// o.toUpperCase(); // errordynamic отключает проверки
Переменная типа dynamic тоже хранит что угодно, но отключает проверки во время компиляции. Ошибки обнаруживаются только во время выполнения.
dynamic d = "hi";
d.toUpperCase(); // alloweddynamic может привести к позднему сбою
Поскольку проверки отключены, неправильный вызов у dynamic успешно компилируется, но может вызвать ошибку во время выполнения. Удобство имеет свою цену.
dynamic d = 5;
d.toUpperCase(); // runtime errorObject безопаснее dynamic
Выбирайте Object, когда действительно нужно хранить любое значение. Вы сохраните безопасность типов, а компилятор будет проверять вызовы.
Object или допускающий null Object
Обычный Object не допускает null. Если значение может быть null, используйте nullable-форму Object, чтобы разрешить и null.
Object? maybe = null;Приведение обратно к типу
Извлеките настоящий тип из Object с помощью приведения as, после чего снова вызывайте его методы с полной проверкой.
Object o = "hi";
var up = (o as String).toUpperCase();Зачем нужен dynamic
dynamic полезен при работе с данными без типа, например со слабо структурированным JSON, когда структура заранее неизвестна.
По умолчанию избегайте dynamic
Частое использование dynamic может скрывать ошибки, пока с ними не столкнутся пользователи. Используйте конкретные типы или Object, если только dynamic действительно не нужен.
Выбор между двумя вариантами
Нужно хранить любое значение с проверкой безопасности? Выберите Object. Нужно обойти проверки для неструктурированных данных? Используйте dynamic, но редко и осознанно.
Быстрая проверка
В чём ключевое различие между Object и dynamic?
Повторение: dynamic и Object
Вы узнали, что Object безопасно хранит что угодно, а dynamic хранит что угодно без проверок. Предпочитайте Object или конкретные типы. 🛡️
Часто задаваемые вопросы
Урок «Типы dynamic и Object» бесплатный?
Да — полный текст урока «Типы dynamic и Object» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Dart Academy, подпишись на CoddyKit PRO. Курс Dart Academy содержит 4 уроков всего.
Чему я научусь в уроке «Типы dynamic и Object»?
Основные типы Dart и случаи их применения Ты практикуешь Dart Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Dart Academy?
Предыдущий опыт не требуется. Dart Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Типы dynamic и Object»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Dart Academy?
Да. Каждый урок Dart Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Разбор var, final и const
- Основные типы: int, double, String, bool
- Вывод типа и явное указание типов
- Типы dynamic и Object