// T musí mít metodu getId, která vrací string
interface HasId {
    getId(): string;
}

function processItem<T extends HasId>(item: T): void {
    console.log(item.getId());
}

// Použití:
class User implements HasId {
    getId() { return "user-123"; }
}

processItem(new User()); // OK
processItem({ getId: () => "test" }); // OK
processItem({ name: "Jan" }); // Chyba - chybí metoda getId