Generyki w TypeScript
to mechanizm pozwalający na tworzenie ogólnych typów i funkcji, które mogą działać z różnymi typami, które przyjmują jako swoisty argument.
Pozwalają na uzyskanie bardziej elastycznego i bezpiecznego kodu.
const firstElement = function <T>(arr: T[]): T | undefined { return arr[0]; } const num: number | undefined = firstElement([1, 2]); const string1: string | undefined = firstElement([1, 2]); // Type 'number' is not assignable to type 'string' const string2: string | undefined = firstElement(["a", "b"]);
Generyki mogą by używane również w deklaracjach klas czy interfejsów.
Typy generyczne mogą rozszerzać inne typy a take przyjmować wartości domyślne:
interface RandomInterface { abc: string } const firstElement = function <T extends RandomInterface>(arr: T[]): T | undefined { return arr[0]; } //default type const lastElement = function <T = RandomInterface>(arr?: T[]): T | undefined { return ...; } const last = lastElement(); // Assumes last is of type RandomInterface const first = firstElement([{value: "val"}]); // Object literal may only specify known properties, and 'value' does not exist in type 'RandomInterface' const anotherFirst = firstElement([{abc: "ABC", value: "val"}]); // OK
Więcej informacji dostępnych jest np. tutaj.