Позволь TypeScript определять типы самому благодаря выводу типов и пойми, почему unknown лучше опасного any.
Открыть этот урок в KodokonХорошая новость: аннотировать каждую переменную не обязательно. Благодаря выводу типов TypeScript сам определяет тип переменной по значению, которое ты ей даёшь. Достаточно написать let city = "Lyon": TypeScript знает, что city - это string, и защищает её так же, как если бы ты поставил аннотацию.
let city = "Lyon"; // inferred type: string
let count = 3; // inferred type: number
count = count + 1; // accepted
// city = 42; -> error: city is still a stringТип any означает «что угодно». Переменная типа any ускользает от всех проверок: TypeScript принимает всё подряд, ничего не проверяя. Это как снять ремень безопасности: код компилируется, но ошибки возвращаются во время выполнения - ровно то, что TypeScript должен был предотвратить.
let data: any = "hello";
data = 42; // accepted without complaint
// Compiles, but crashes at runtime:
// data.toUpperCase() does not exist on a number!Для значения, тип которого действительно неизвестен (ответ сервера, ввод пользователя), выбирай unknown. Как и any, он принимает любое значение, но заставляет тебя проверить тип (например через typeof), прежде чем его использовать. Поэтому безопасность остаётся нетронутой.
let value: unknown = "hello";
// console.log(value.toUpperCase()); -> rejected!
if (typeof value === "string") {
console.log(value.toUpperCase()); // "HELLO"
}