Почему TODO можно указать у любого типа

Ответ

TODO — это аннотация, которая не влияет на тип данных, а служит для пометки кода разработчиком. Она указывает на необходимость доработки или исправления в будущем.

// Примеры с разными типами
var name: String? = null // TODO: инициализировать
val count: Int = 0 // TODO: заменить на динамическое значение
data class User(val id: Long) // TODO: добавить поля

TODO — чисто информативная метка, не связанная с системой типов. Компилятор её игнорирует, но IDE подсвечивает для удобства.

Ответ 18+ 🔞

А, ну это про эти ваши TODOшки, да? Слушай, история смешная, вообще. Представь себе: сидишь ты, пишешь код, всё такое, и тут — бац! — надо на будущее себе или кому-то другому напоминалку оставить. Ну типа "здесь херня, но потом разберёмся". Вот для этого и придумали TODO.

Это ж не какой-то там @Deprecated или ещё какая системная хуйня. Это просто, блядь, аннотация-помечивалка. Как маркером на полях книги: "здесь я нихуя не понял, надо вернуться". Компилятор на неё смотрит, такой: "Да похуй, чел, пиши что хочешь", — и спокойно компилирует дальше. А вот твоя IDE — она хитрая жопа — видит эту пометку и начинает подсвечивать её ярким цветочком, обычно оранжевым или жёлтым, чтоб глаз дёргался. Чтоб не забыл, сука!

Смотри, как это выглядит в деле:

// Примеры с разными типами
var name: String? = null // TODO: инициализировать когда-нибудь, а может и нет
val count: Int = 0 // TODO: заменить на динамическое значение, а то сейчас полный пиздец
data class User(val id: Long) // TODO: добавить поля name, email, а то сейчас пользователь — просто цифра, манда с ушами

Вот видишь? Типы данных (String?, Int, data class) — это святое, их трогать нельзя, они должны быть точными. А вот этот TODO — это просто твоё личное "ой, всё!", застрявшее в коде. Он систему типов не ломает, компилятору на него да похуй, но зато когда через месяц откроешь этот файл, сразу увидишь: "А, точно, тут же я ещё нихуя не сделал!".

Короче, инструмент полезный, чтобы не просрать важные мысли по дороге. Главное — не злоупотреблять, а то проект превратится в одно сплошное TODO, и потом сам от себя охуеешь, когда попробуешь в нём разобраться.