ну сам смотри, если используются встроенные типы и обычные предсказуемые операции над ними, то диалайзер правильно подскажет, но если у тебя какая структура получается в результате каких-то действий, то тут никто не подскажет тебе, что должно вернуться, для этого и пешется свой тип
Ну, это не совсем верно. Диалайзер в основном на тайпспеки и их сверяет. Можно вообще не объявлять типы, а всегда отчётливо писать тайпспеки
Я как-то раз делал валидатор типов. Ты просто объявляешь тип, а мой валидатор генерирует функцию, которая определяет принадлежность аргумента к данному типу и возвращает boolean() Это прикольно, но практически абсолютно бесполезно