Сначала проверьте typeof, затем нормализованную длину. Возвращайте строку ошибки для неверного значения и undefined для допустимого; не приводите unknown к string без проверки.
Как написать стрелочный валидатор unknown для имени?
Сначала проверьте 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, контракт и реализацию нужно изменить; нельзя молча считать эти единицы одинаковыми.