Сужение типов с помощью typeof, равенства и истинности
Используйте typeof, строгое равенство и истинность, чтобы сужать типы-объединения без небезопасных приведений.
«Сужение типов с помощью typeof, равенства и истинности» — бесплатный урок TypeScript Academy на CoddyKit. Это урок 1 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения TypeScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс TypeScript Academy содержит 3 уроков всего.
Введение
Цель: сужать широкие объединённые типы до точных типов с помощью определения типа, строгого равенства и проверки истинности. Это открывает безопасный доступ к свойствам и методам.
Сужение с помощью typeof
Оператор определения типа сужает примитивные типы (строку, число, логическое значение, большое целое число, символ и неопределённое значение). Используйте его для безопасного выбора ветви.
function printLen(x: string | number) {
if (typeof x === "string") {
console.log(x.length); // x is string
} else {
console.log(x.toFixed(2)); // x is number
}
}
printLen("TS");
printLen(3.14);Строгое равенство
Для точного сужения отдавайте предпочтение ===/!==; избегайте ==, который приводит типы и вводит в заблуждение людей и компилятор.
function greet(x: string | null) {
if (x !== null) {
// x is string here
console.log("Hello " + x.toUpperCase());
} else {
console.log("No name");
}
}
greet("Ada");
greet(null);Сужение по истинности
Проверка истинности тоже сужает тип, но будьте внимательны: "" и 0 считаются ложными, хотя являются допустимыми значениями. Когда их нужно отличать, используйте строгие проверки.
function show(v: string | 0 | "" | null | undefined) {
if (v) {
// v is string here (non-empty)
console.log("value:", v);
} else {
// v is "", 0, null, or undefined
console.log("empty");
}
}
show("ok");
show("");
show(0);Сочетание проверок
Сочетайте проверки, чтобы защищать вложенный доступ. Для более точного контроля отдавайте предпочтение явному u !== null && u !== undefined, если 0 и пустая строка являются допустимыми вариантами.
type MaybeUser = { name: string } | null | undefined;
function hi(u: MaybeUser) {
if (u && u.name) {
console.log("Hi " + u.name);
} else {
console.log("No user");
}
}
hi({ name: "Lin" });
hi(null);Рекомендации
Рекомендации:
- Используйте определение типа для примитивов.
- Используйте ===/!==, чтобы избежать приведения типов.
- Проверка истинности кратка, но избегайте её, когда пустые строки или ноль имеют смысл.
Проверка сужения
Быстрая проверка: какая проверка правильно сужает значение до типа строки?
Итоги
Итоги: сужайте типы с помощью определения типа, строгого равенства и проверки истинности. Отдавайте предпочтение явным проверкам, если 0 и пустая строка являются допустимыми значениями.
Часто задаваемые вопросы
Урок «Сужение типов с помощью typeof, равенства и истинности» бесплатный?
Да — полный текст урока «Сужение типов с помощью typeof, равенства и истинности» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс TypeScript Academy, подпишись на CoddyKit PRO. Курс TypeScript Academy содержит 3 уроков всего.
Чему я научусь в уроке «Сужение типов с помощью typeof, равенства и истинности»?
Используйте typeof, строгое равенство и истинность, чтобы сужать типы-объединения без небезопасных приведений. Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать TypeScript Academy?
Предыдущий опыт не требуется. TypeScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 3.
Сколько времени занимает урок «Сужение типов с помощью typeof, равенства и истинности»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке TypeScript Academy?
Да. Каждый урок TypeScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Сужение типов с помощью typeof, равенства и истинности
- in, instanceof и дискриминированные объединения
- Полнота проверок с never (введение)