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

Что такое Generic

В TypeScript Generic (обобщения) позволяют создавать компоненты, которые работают с множеством типов, вместо одного. Это делается с использованием параметров типов. Вот примеры использования обобщений для функции, класса и интерфейса.

Generic Функция

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

function identity<T>(arg: T): T {
    return arg;
}

// Пример использования:
let output1 = identity<string>("Hello"); // Вывод: "Hello"
let output2 = identity<number>(42);       // Вывод: 42

В этом примере T является параметром типа, который определяет тип аргумента и возвращаемого значения функции identity.

Кратко, <T> в TypeScript означает параметр типа. Это способ сделать код обобщённым, чтобы он мог работать с различными типами данных. Внутри обобщённого кода T действует как placeholder для любого типа, который будет указан при использовании этого кода.

Generic Класс

Обобщённый класс может работать с различными типами данных:

class GenericNumber<T> {
    zeroValue: T;
    add: (x: T, y: T) => T;

    constructor(zeroValue: T, addFunction: (x: T, y: T) => T) {
        this.zeroValue = zeroValue;
        this.add = addFunction;
    }
}

// Пример использования:
let myGenericNumber = new GenericNumber<number>(0, (x, y) => x + y);
console.log(myGenericNumber.add(5, 10)); // Вывод: 15

В этом примере T позволяет классу GenericNumber быть параметризованным любым типом данных, таким как number, string, и т.д.

Generic Интерфейс

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

interface GenericIdentityFn<T> {
    (arg: T): T;
}

function identityFunction<T>(arg: T): T {
    return arg;
}

let myIdentity: GenericIdentityFn<number> = identityFunction;
console.log(myIdentity(10)); // Вывод: 10

В этом примере интерфейс GenericIdentityFn определяет обобщённую функцию, которая принимает и возвращает значение одного и того же типа T.


Warning: Undefined variable $aff_bottom_mark in /sites/codelab.pro/wp-content/themes/myTheme/dist/partials/post/post_base.php on line 81

Warning: Undefined variable $aff_bottom_info in /sites/codelab.pro/wp-content/themes/myTheme/dist/partials/post/post_base.php on line 85