Как написать стрелочный валидатор unknown для имени?

Сначала проверьте typeof, затем нормализованную длину. Возвращайте строку ошибки для неверного значения и undefined для допустимого; не приводите unknown к string без проверки.

Короткий ответ

Что ответить на собеседовании

Сначала проверьте typeof, затем нормализованную длину. Возвращайте строку ошибки для неверного значения и undefined для допустимого; не приводите unknown к string без проверки.

Подробный разбор

Ответ с пояснениями

Условие

Сигнатура TypeScript: type Validator = (value: unknown) => string | undefined. Допустима строка после trim длиной от 2 до 40 UTF-16 code units; исходное значение не изменяется. Требуются понятные сообщения, функция — стрелочная.

Ответ

Сначала проверьте typeof, затем нормализованную длину. Возвращайте строку ошибки для неверного значения и undefined для допустимого; не приводите unknown к string без проверки.

const validateName: Validator = value => {
  if (typeof value !== 'string') return 'Введите текст';
  const name = value.trim();
  if (name.length < 2) return 'Минимум 2 символа';
  if (name.length > 40) return 'Максимум 40 символов';
  return undefined;
};

Длина здесь задана через JavaScript length. Если продукт считает пользовательские графемы, например emoji, контракт и реализацию нужно изменить; нельзя молча считать эти единицы одинаковыми.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее