0Pricing
Dart Academy · Урок

Типы 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(); // error

dynamic отключает проверки

Переменная типа dynamic тоже хранит что угодно, но отключает проверки во время компиляции. Ошибки обнаруживаются только во время выполнения.

dynamic d = "hi";
d.toUpperCase(); // allowed

dynamic может привести к позднему сбою

Поскольку проверки отключены, неправильный вызов у dynamic успешно компилируется, но может вызвать ошибку во время выполнения. Удобство имеет свою цену.

dynamic d = 5;
d.toUpperCase(); // runtime error

Object безопаснее 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 — локальная установка не требуется.

Все уроки этого курса

  1. Разбор var, final и const
  2. Основные типы: int, double, String, bool
  3. Вывод типа и явное указание типов
  4. Типы dynamic и Object
← Назад к Dart Academy