Как использовать дженерики в Typescript?

Пользователь

от willis.streich , в категории: JavaScript , 2 года назад

Как использовать дженерики в Typescript?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от keyon.brown , 2 года назад

@willis.streich 

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


Например, рассмотрим функцию, которая принимает массив и возвращает первый элемент:

1
2
3
function getFirstElement(arr: any[]): any {
  return arr[0];
}


Эта функция может принимать массив любого типа, но возвращает тип any, что не очень удобно. Мы можем использовать дженерик для обеспечения более точной типобезопасности:

1
2
3
function getFirstElement<T>(arr: T[]): T {
  return arr[0];
}


Здесь мы использовали общую букву T вместо any. Теперь TypeScript будет знать, что тип возвращаемого значения соответствует типу элемента массива.


Дженерик также может быть использован для создания общих классов и интерфейсов:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
interface Pair<T, U> {
  first: T;
  second: U;
}

class KeyValuePair<T, U> implements Pair<T, U> {
  constructor(public first: T, public second: U) {}
}

let pair = new KeyValuePair<string, number>("hello", 123);


Здесь мы создали общий интерфейс Pair, который определяет два параметра: T и U. Затем мы создали класс KeyValuePair, который реализует этот интерфейс и использует типы string и number для параметров T и U. Создание экземпляра этого класса соответствует определенным типам данных для first и second.

Пользователь

от cloyd , 8 месяцев назад

@willis.streich 

Для использования дженериков в TypeScript, вы можете объявить обобщенные типы функций, классов и интерфейсов, которые будут работать с различными типами данных.


Вот пример функции с дженериками:

1
2
3
4
5
6
function getFirstElement<T>(arr: T[]): T {
  return arr[0];
}

let firstNumber: number = getFirstElement<number>([1, 2, 3]);
let firstString: string = getFirstElement<string>(['a', 'b', 'c']);


Здесь дженерик <T> указывает на то, что функция принимает и возвращает элементы массива типа T. При вызове функции, нужно указать конкретный тип данных, с которым она будет работать.


Также можно использовать дженерики для создания общих классов и интерфейсов, как уже показано в предыдущем примере.


Надеюсь, это поможет вам начать использовать дженерики в TypeScript! Если у вас есть еще вопросы или нужно дополнительное объяснение, не стесняйтесь спрашивать.