Menu
CoddyTech

Использование обобщенной функции

Часть раздела Введение в TypeScript путешествия по JavaScript на Coddy. Урок 59 из 73.

Есть два способа использовать обобщённую функцию: с явными аргументами типа или позволив TypeScript автоматически вывести тип.

Вот как можно вызвать обобщённую функцию с явными аргументами типа:

const result1 = wrapInObject<string>("hello");
const result2 = wrapInObject<number>(42);

<string> и <number> явно указывают TypeScript, какой тип использовать для T. Это даёт вам полный контроль над параметром типа.

Однако TypeScript достаточно умён, чтобы в большинстве случаев вывести тип из передаваемого вами аргумента:

const result1 = wrapInObject("hello");  // T inferred as string
const result2 = wrapInObject(42);       // T inferred as number

Вывод типов делает ваш код более чистым и понятным, сохраняя ту же безопасность типов. TypeScript анализирует аргумент и автоматически определяет, каким должен быть T, поэтому вам не нужно указывать явную аннотацию типа, если только вы не хотите переопределить выведенный тип.

challenge icon

Задание

Легко

Вам предоставлено следующее из предыдущего задания:

  • Обобщённая функция wrapInObject<T>, которая принимает элемент типа T и возвращает { value: T }

Вызовите функцию wrapInObject, используя явные аргументы типа и вывод типов:

Использование явных аргументов типа:

  • Создайте переменную explicitString, вызвав wrapInObject<string> со значением "TypeScript"
  • Создайте переменную explicitNumber, вызвав wrapInObject<number> со значением 25
  • Создайте переменную explicitBoolean, вызвав wrapInObject<boolean> со значением false

Использование вывода типов:

  • Создайте переменную inferredString, вызвав wrapInObject со значением "Generics" (позвольте TypeScript вывести тип)
  • Создайте переменную inferredNumber, вызвав wrapInObject со значением 99 (позвольте TypeScript вывести тип)
  • Создайте переменную inferredBoolean, вызвав wrapInObject со значением true (позвольте TypeScript вывести тип)

Выведите следующие результаты:

  • Выведите explicitString.value
  • Выведите explicitNumber.value
  • Выведите explicitBoolean.value
  • Выведите inferredString.value
  • Выведите inferredNumber.value
  • Выведите inferredBoolean.value

Попробуйте сами

// Обобщённая функция из предыдущего задания
function wrapInObject<T>(item: T): { value: T } {
    return { value: item };
}

// TODO: Напишите свой код здесь
// Создайте переменные, используя явные аргументы типов
// Создайте переменные, используя вывод типов

// Выведите результаты
quiz iconПроверьте себя

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

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

Потренируйтесь самостоятельно: Песочница TypeScript