Что такое типы данных в Dart
Что проверяют
Знаете ли вы систему типов Dart целиком, а не список ключевых слов. Для фронтенда на Flutter главное здесь строгая статическая типизация и безопасность по null: именно они определяют, как пишется код и какие ошибки ловятся до запуска.
Как отвечать
Начните с устройства: в Dart всё значение это объект, общий корень иерархии Object, а с учётом null сверху стоит Object?. Отдельных примитивов, как в Java, нет, числа и функции тоже объекты.
Дальше по группам. Числа: int и double с общим супертипом num, и стоит оговорить, что при компиляции в JavaScript целые ложатся на числовое представление браузера, поэтому поведение на вебе и в нативной сборке различается. Строки: String, неизменяемые, с интерполяцией. Логический тип строгий: в условии нельзя использовать число или null. Коллекции: List, Set, Map, все параметризуемые, с литералами и раскрытием.
Отдельный блок про null safety, его спрашивают чаще самих типов. По умолчанию тип значение null не принимает, знак вопроса его разрешает, late откладывает инициализацию неизменяемой ссылки, а безопасный доступ и оператор объединения позволяют работать с пустотой без проверок в каждой строке.
И различайте два способа сказать «что угодно»: dynamic отключает статическую проверку и переносит ошибки в рантайм, Object? проверку сохраняет и требует сузить тип перед использованием. Свои типы это class, enum со свойствами, а в современных версиях ещё и записи с сопоставлением по образцу.
Где спотыкаются
Называют int и double примитивами по аналогии с Java и не могут объяснить, зачем нужен num и почему деление косой чертой возвращает дробное число даже для двух целых.
Ставят восклицательный знак везде, где ругается анализатор. Это не приведение типа, а отказ от проверки под личную ответственность, и падение просто переезжает в рантайм.
Смешивают dynamic, Object? и var. Первое снимает проверки, второе их сохраняет, а var вообще про вывод типа при объявлении: тип выводится один раз и дальше меняться не может.