Как метод сделать generic?

В TypeScript вы можете сделать метод generic, добавив параметр типа перед аргументами метода, используя угловые скобки <>. Это позволяет вам использовать различные типы данных при вызове метода, делая его более гибким и переиспользуемым.

Пример:

function printArray<T>(arr: T[]): void {
  for (const item of arr) {
    console.log(item);
  }
}

В этом примере printArray - это generic метод, который принимает массив arr с элементами типа T. Буква T - это переменная типа, которую мы определили перед указанием аргументов метода.

Теперь мы можем вызывать этот метод с различными типами данных. Например:

const stringArray: string[] = ["apple", "banana", "cherry"];
printArray<string>(stringArray);

const numberArray: number[] = [1, 2, 3, 4, 5];
printArray<number>(numberArray);

Если мы хотим явно указать тип данных, мы можем использовать угловые скобки и передать соответствующий тип. В примере выше мы явно указали тип string и number для массивов строк и чисел соответственно.

Однако в большинстве случаев TypeScript может самостоятельно вывести тип данных при вызове generic метода, на основе переданных аргументов. Таким образом, вызовы метода в предыдущем примере могут быть упрощены:

printArray(stringArray); // TypeScript выводит, что это массив строк

printArray(numberArray); // TypeScript выводит, что это массив чисел

Это основы использования generic методов в TypeScript. Они позволяют создавать более гибкий и переиспользуемый код, который может работать со множеством различных типов данных.