Карточка Senior Dart: классы и миксины обновлено
extension type
Вопрос
Что такое extension type в Dart 3.3 и зачем он нужен?
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
Обёртка над существующим типом без затрат в рантайме: extension type UserId(int value) {}. При компиляции это отдельный тип (нельзя перепутать UserId и OrderId), а в рантайме обычный int.
Ответ
Обёртка над существующим типом без затрат в рантайме: extension type UserId(int value) {}. При компиляции это отдельный тип (нельзя перепутать UserId и OrderId), а в рантайме обычный int. Используется для строгой типизации идентификаторов и для interop с JavaScript.
Разбор
Важно: проверка is UserId в рантайме невозможна, тип стирается.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Dart: классы и миксины»
- Dart 3: модификатор interface
- Dart: переопределение == без hashCode
- Dart: расширения разрешаются статически
- Dart: зачем нужен factory-конструктор
- Dart: const и именованный конструктор
- Dart: implements против extends
- Dart: какой метод победит при нескольких миксинах
- Dart: ключевое слово on у миксина