Menu
Coddy logo textTech

Утверждения типов

Часть раздела Введение в 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;
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

challenge icon

Задание

Легко

Создайте функцию, которая обрабатывает данные из симуляции внешнего 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));
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Введение в TypeScript