Узагальнені типи (Generics)
Generics — механізм параметризованих типів: написати клас або функцію один раз, що працює з будь-яким типом, зберігаючи типову безпеку. Компілятор перевіряє типи на етапі збірки, а не в runtime.Приклад (TypeScript)function firstItem(arr: T[]): T | null {
return arr.length ? arr[0] : null;
}
const n = firstItem([1, 2, 3]); // number
const s = firstItem(['a', 'b']); // stringУ PHPPHP не має вбудованих generics, але PHPStan/Psalm підтримують їх через анотації @template і докблоки. Вони перевіряються статично, а не в runtime./** @template T */
class Collection {
/** @param T $item */
public function add($item): void { ... }
}Де використовуютьсяКолекції, репозиторії, Result types, будь-який контейнер. Java, C#, TypeScript, Go (з версії 1.18) мають вбудовані generics.