Проверяет понимание TypeScript типов any и unknown, а также исторических причин выбора any для API-методов.
В TypeScript методы JSON.parse и fetch возвращают тип any, а не unknown по историческим причинам. Когда TypeScript только появился (2012 год), типа unknown еще не существовало — он был добавлен только в версии 3.0 (2018 год). На тот момент any был единственным способом описать значение, тип которого неизвестен на этапе компиляции.
Изменение возвращаемого типа с any на unknown сломало бы миллионы существующих проектов. Разработчики TypeScript решили сохранить any для этих методов, чтобы не нарушать обратную совместимость. Однако они рекомендуют разработчикам вручную указывать ожидаемый тип.
Вместо того чтобы полагаться на any, лучше явно указывать тип:
// Плохо — возвращает any
const data = JSON.parse('{"name":"John"}');
console.log(data.age); // Ошибки нет, но age может не существовать
// Хорошо — указываем тип
interface User {
name: string;
age?: number;
}
const user: User = JSON.parse('{"name":"John"}');
console.log(user.age); // TypeScript подскажет, что age опциональный
// С fetch тоже самое
const response = await fetch('/api/user');
const userData: User = await response.json();Используйте явные аннотации типов или дженерики при работе с JSON.parse и fetch, чтобы сохранить типобезопасность. Это поможет избежать ошибок во время выполнения и сделает код более предсказуемым.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию