Проверяет понимание того, как методы массива в TypeScript могут нарушить строгую типизацию, что важно для написания безопасного кода.
TypeScript стремится обеспечить строгую типизацию, но некоторые методы массивов могут привести к потере типов, если их использовать неправильно. Это особенно актуально для методов, которые изменяют тип элементов или требуют явного указания типа аккумулятора.
Наиболее частый источник проблем — Array.prototype.reduce. Если не указать начальное значение или тип аккумулятора, TypeScript может вывести тип как any или объединить типы непредсказуемым образом. Например:
const numbers = [1, 2, 3];
const sum = numbers.reduce((acc, curr) => acc + curr); // тип sum: number
// Но если начальное значение не указано и массив пуст, тип будет any
const empty: number[] = [];
const result = empty.reduce((acc, curr) => acc + curr); // тип result: anyТакже Array.prototype.map может сломать типизацию, если колбэк возвращает any или если тип возвращаемого значения не соответствует ожидаемому. Например, использование as any внутри колбэка или неявное приведение типов.
Рассмотрим пример с reduce, где типизация ломается из-за отсутствия начального значения:
const items = [{ price: 10 }, { price: 20 }];
const total = items.reduce((acc, item) => acc + item.price); // тип total: any, так как acc не имеет начального типа
// Правильно: указать начальное значение
const totalCorrect = items.reduce((acc, item) => acc + item.price, 0); // тип totalCorrect: numberЕщё один пример — использование Array.prototype.find с неверным типом предиката, что может привести к any.
reduce.any в колбэках; используйте явные типы параметров.Методы массивов, такие как reduce и map, могут нарушить типизацию, если не соблюдать осторожность. Всегда указывайте начальные значения и явные типы, чтобы сохранить строгость TypeScript и избежать ошибок в рантайме.
Уровень
Рейтинг:
4
Сложность:
5
Навыки
JavaScript
TypeScript
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию