cast либо преобразует, и проверяет, и возвращает результат, либо возвращает null, и это
cast
НЕ validate
результат - он просто его преобразует. validate(Sync)/isValid(Sync)
приводит к приведению, а затем проверяет.
Если вы хотите предоставить сообщение об ошибке в определенной схеме c в случае неудачного преобразования, вы делаете это с помощью typeError
В то же время я бы не хотел запускать его дважды, например - один раз для проверки, один раз для приведения.
Как я уже сказал, методы проверки всегда сначала запускают приведение перед проверкой (если приведение не выполняется, проверка не выполняется). Если вам нужны функции приведения и проверки, вы просто вызываете методы проверки, и они возвращают результат cast
(если он действителен) - вам не нужно вызывать cast
, если вы ТОЛЬКО не хотите выполнить приведение (без проверки).