Утверждения типов
Часть раздела Введение в TypeScript путешествия по JavaScript на Coddy — урок 68 из 73.
Иногда у TypeScript недостаточно информации, чтобы определить точный тип значения, но вы как разработчик знаете больше о том, чем на самом деле является это значение. Утверждения типов (Type assertions) позволяют вам сказать TypeScript: «поверь мне, я знаю, что это значение имеет этот конкретный тип».
TypeScript предоставляет два синтаксиса для утверждения типов. Синтаксис as является более распространенным подходом:
let data: unknown = '{"name": "John", "age": 30}';
let user = data as string;Вы также можете использовать синтаксис с угловыми скобками, хотя он менее распространен в современном TypeScript:
let data: unknown = '{"name": "John", "age": 30}';
let user = <string>data;В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Задание
ЛегкоСоздайте функцию, которая обрабатывает данные из симуляции внешнего API. Вы будете работать со значениями типа unknown и использовать утверждения типов для безопасного доступа к их свойствам.
Создайте переменную apiResponse типа unknown и присвойте ей следующую JSON-строку:
{"userId": 42, "username": "alice_dev", "isActive": true}Создайте функцию с именем processUserData, которая:
- Принимает параметр
dataтипаunknown - Использует утверждение типа, чтобы рассматривать
dataкакstring - Разбирает JSON-строку с помощью
JSON.parse() - Использует еще одно утверждение типа, чтобы рассматривать результат разбора как объект со свойствами
userId(number),username(string) иisActive(boolean) - Возвращает отформатированную строку:
"User [userId]: [username] (Active: [isActive])" - Имеет явно указанный тип возвращаемого значения
string
Создайте дополнительные тестовые данные:
- Создайте
secondApiResponseтипаunknownс JSON-строкой:{"userId": 15, "username": "bob_admin", "isActive": false} - Создайте
thirdApiResponseтипаunknownс JSON-строкой:{"userId": 99, "username": "charlie_user", "isActive": true}
Протестируйте свою функцию и выведите следующие результаты:
- Вызовите
processUserDataсapiResponseи выведите результат - Вызовите
processUserDataсsecondApiResponseи выведите результат - Вызовите
processUserDataсthirdApiResponseи выведите результат
Шпаргалка
Утверждения типов позволяют вам сообщить TypeScript конкретный тип значения, когда вы знаете больше, чем TypeScript может вывести.
Используйте синтаксис as (наиболее распространенный):
let data: unknown = '{"name": "John", "age": 30}';
let user = data as string;Альтернативный синтаксис с угловыми скобками:
let data: unknown = '{"name": "John", "age": 30}';
let user = <string>data;Попробуйте сами
// Создание переменных ответа API
const apiResponse: unknown = '{"userId": 42, "username": "alice_dev", "isActive": true}';
const secondApiResponse: unknown = '{"userId": 15, "username": "bob_admin", "isActive": false}';
const thirdApiResponse: unknown = '{"userId": 99, "username": "charlie_user", "isActive": true}';
// TODO: Создайте здесь функцию processUserData
// Тестирование функции и вывод результатов
console.log(processUserData(apiResponse));
console.log(processUserData(secondApiResponse));
console.log(processUserData(thirdApiResponse));В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Введение в TypeScript
1Начало работы с TS
Что такое TypeScript?Зачем использовать TypeScript?Ваш первый код на TypeScriptПроцесс компиляции и ошибкиИтоги: Введение в TS4Работа с функциями
Типизация параметров и возвращаемых значенийТипизация стрелочных функцийТип возвращаемого значения 'void'Необязательные параметры с '?'Значения параметров по умолчаниюТипизация Rest-параметровОпределение типов функцийИтоги: Создание типизированных функций2Основные типы
Базовые типы: str, num, booleanТип 'any': лазейкаТип 'unknown'Работа с 'null' и 'undef'Вывод типов в действииЯвные аннотации типовИтоги: Практика по основным типам5Типы: псевдонимы, объединения и пересечения
Псевдонимы типов для примитивовТипы объединения ('|')Работа с типами объединенияЛитеральные типыТипы пересечения ('&')Комбинирование псевдонимов типовИтоги: продвинутые комбинации типов8Перечисления (Enums)
Что такое числовое перечисление?Использование числовых перечисленийЧто такое строковое перечисление?Использование строковых перечисленийГетерогенные перечисленияИтоги: использование перечислений11Продвинутые темы
Утверждения типовType Guards: in и instanceofТип 'never'Nullable-типы ('strictNull')Индексные сигнатуры для объектовИтоги: Тонкая настройка типов3Структуры данных: массивы и кортежи
Типизированные массивыМодификатор 'readonly' для массивовЧто такое кортеж?Объявление кортежей и доступ к нимДеструктуризация кортежейКортежи readonlyМногомерные типизированные массивыОператор spread с массивамиИтоги: массивы и кортежи