0Pricing
TypeScript Academy · Урок

Обобщённые функции: параметры типов

Добавляйте параметры типов в функции для повторного использования

«Обобщённые функции: параметры типов» — бесплатный урок TypeScript Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения TypeScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс TypeScript Academy содержит 4 уроков всего.

Добро пожаловать

Обобщения позволяют писать функции, работающие с любым типом и сохраняющие безопасность типов. Вместо `any` используется параметр типа, который определяется при вызове функции.

Проблема, которую решают обобщения

Функция, возвращающая `any`, теряет информацию о типе. Обобщения сохраняют связь между типами входных и выходных данных.
// Without generics — loses type info
function first(arr: any[]): any { return arr[0]; }

// With generics — type-safe
function first<T>(arr: T[]): T { return arr[0]; }

Синтаксис параметра типа

Объявите параметр типа с помощью угловых скобок `` перед списком параметров. Используйте T в параметрах и возвращаемом типе.
function identity<T>(value: T): T {
  return value;
}
const n = identity(42);       // T is number
const s = identity('hello');  // T is string

Вывод типа для обобщённых функций

TypeScript выводит аргумент типа из фактического аргумента. Обычно указывать его явно не требуется.
function wrap<T>(val: T): T[] { return [val]; }
const nums = wrap(42);    // T inferred as number -> number[]
const strs = wrap('hi');  // T inferred as string -> string[]

Несколько параметров типов

У функций может быть несколько параметров типов.
function pair<A, B>(a: A, b: B): [A, B] {
  return [a, b];
}
const p = pair(1, 'hello'); // [number, string]

Обобщённые функции для массивов

Обобщения необходимы для служебных функций массивов, работающих с элементами любого типа.
function filterNull<T>(arr: (T | null)[]): T[] {
  return arr.filter((x): x is T => x !== null);
}

Явные аргументы типов

Аргументы типов можно указать явно, если TypeScript не может вывести их самостоятельно.
function create<T>(): T | null { return null; }
const user = create<User>(); // T cannot be inferred — must be explicit

Обобщения и any

В отличие от `any`, обобщения сохраняют связь между типами во всей функции. Возвращаемый тип связан с входным типом.
function echo<T>(val: T): T { return val; }
const n: number = echo(42);   // OK
// const s: string = echo(42); // Error — T is number

Обобщённые стрелочные функции

Стрелочные функции используют тот же синтаксис, но в файлах .tsx перед закрывающей угловой скобкой нужна запятая, чтобы отличить его от тегов JSX.
const identity = <T>(val: T): T => val;
// In .tsx files:
const identity2 = <T,>(val: T): T => val;

Возврат другого типа

Обобщённые функции могут использовать параметр типа преобразованным образом.
function mapArray<T, U>(arr: T[], fn: (item: T) => U): U[] {
  return arr.map(fn);
}
const lengths = mapArray(['hello', 'world'], s => s.length);
// lengths: number[]

Параметры типов со значениями по умолчанию

Укажите тип по умолчанию для параметра типа, чтобы сделать его необязательным.
function createList<T = string>(): T[] { return []; }
const list = createList(); // T defaults to string

Быстрая проверка

Каков возвращаемый тип `identity(42)`?

Итоги

Обобщённые функции используют параметры типов (T), чтобы сохранять связи между входными и выходными данными. TypeScript автоматически выводит аргументы типов. Используйте обобщения вместо any, чтобы писать повторно используемые типобезопасные служебные функции.

Часто задаваемые вопросы

Урок «Обобщённые функции: параметры типов» бесплатный?

Да — полный текст урока «Обобщённые функции: параметры типов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс TypeScript Academy, подпишись на CoddyKit PRO. Курс TypeScript Academy содержит 4 уроков всего.

Чему я научусь в уроке «Обобщённые функции: параметры типов»?

Добавляйте параметры типов в функции для повторного использования Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать TypeScript Academy?

Предыдущий опыт не требуется. TypeScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Обобщённые функции: параметры типов»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке TypeScript Academy?

Да. Каждый урок TypeScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Обобщённые функции: параметры типов
  2. Обобщённые интерфейсы и псевдонимы типов
  3. Ограничения обобщений с помощью extends
  4. Параметры типов по умолчанию
← Назад к TypeScript Academy