В TypeScript можно создать универсальные типы с помощью использования generics. Generics позволяют создавать компоненты (функции, классы, интерфейсы и т. д.), которые могут работать с различными типами данных, что делает код более гибким и повышает его безопасность.
Пример создания универсального типа в TypeScript:
// Объявляем универсальный тип T function identity<T>(arg: T): T { return arg; } // Используем универсальный тип для переменных let output = identity<string>("hello"); let output2 = identity<number>(123); // Можем не указывать явно тип, TypeScript сам его выведет let output3 = identity(true);
В примере выше функция identity
принимает аргумент типа T
и возвращает его же. При вызове функции мы можем указать конкретный тип, с которым она будет работать, или использовать вывод типов TypeScript.
Универсальные типы также могут быть использованы при создании универсальных классов и интерфейсов:
// Универсальный класс Pair class Pair<T, U> { constructor(public first: T, public second: U) {} } let pair = new Pair<number, string>(10, "hello"); // Универсальный интерфейс Printable interface Printable<T> { print(): T; } class Printer<T> implements Printable<T> { constructor(private value: T) {} print(): T { console.log(this.value); return this.value; } } let printer = new Printer<number>(42); printer.print();
Generics позволяют писать более обобщенный и многоразовый код, который может работать с различными типами данных без потери типовой безопасности. Важно помнить, что универсальные типы могут быть не только с одной переменной, но и с несколькими, что добавляет еще больше гибкости при разработке приложений на TypeScript.