unknown и any: более безопасный выбор
Узнайте, почему unknown заставляет проверять типы перед использованием.
«unknown и any: более безопасный выбор» — бесплатный урок TypeScript Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения TypeScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс TypeScript Academy содержит 4 уроков всего.
Добро пожаловать
Проблема типа any
let val: any = getData();
val.someMethod(); // TypeScript: OK. Runtime: possible crashЗнакомство с unknown
let val: unknown = getData();
// val.someMethod(); // Error: Object is of type 'unknown'Сужение unknown перед использованием
let input: unknown = getInput();
if (typeof input === 'string') {
console.log(input.toUpperCase()); // OK — narrowed to string
}unknown нельзя присвоить конкретному типу
let x: unknown = 'hello';
// let s: string = x; // Error
let s: string = x as string; // OK with assertionИспользование unknown в блоках обработки исключений
try {
doSomething();
} catch (err: unknown) {
if (err instanceof Error) {
console.log(err.message); // safe
}
}unknown для внешних данных
const raw: unknown = JSON.parse(text);
if (
typeof raw === 'object' &&
raw !== null &&
'name' in raw
) {
console.log((raw as any).name);
}Защитники типов для unknown
function isUser(val: unknown): val is { name: string } {
return typeof val === 'object' && val !== null && 'name' in val;
}unknown и never
// unknown: anything can be assigned to it
let a: unknown = 42; // OK
// never: nothing can be assigned to it
function fail(): never { throw new Error(); }Выбор между any и unknown
Библиотеки проверки во время выполнения
import { z } from 'zod';
const UserSchema = z.object({ name: z.string(), age: z.number() });
const user = UserSchema.parse(unknownData); // throws if invalidБыстрая проверка
Итоги
Часто задаваемые вопросы
Урок «unknown и any: более безопасный выбор» бесплатный?
Да — полный текст урока «unknown и any: более безопасный выбор» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс TypeScript Academy, подпишись на CoddyKit PRO. Курс TypeScript Academy содержит 4 уроков всего.
Чему я научусь в уроке «unknown и any: более безопасный выбор»?
Узнайте, почему unknown заставляет проверять типы перед использованием. Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать TypeScript Academy?
Предыдущий опыт не требуется. TypeScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «unknown и any: более безопасный выбор»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке TypeScript Academy?
Да. Каждый урок TypeScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Примитивные типы: string, number, boolean
- Тип any и почему его стоит избегать
- unknown и any: более безопасный выбор
- null, undefined и строгая проверка на null