Глосарій

Узагальнені типи (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

У PHP

PHP не має вбудованих 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.