В TypeScript вызов функции с объектом типа IUser будет корректен, если структура полей IUser совпадает с TUser из библиотеки, даже если это разные интерфейсы.
В языке Java ключевое слово implements используется классом для реализации интерфейса. Интерфейс определяет набор методов без реализации, а класс, который implements этот интерфейс, обязуется реализовать все его методы.
В Java механизм сборщика мусора (Garbage Collector, GC) автоматически освобождает память, занятую объектами, которые больше не используются программой.
Sealed-классы в Java позволяют ограничить набор классов, которые могут наследовать или реализовывать данный класс или интерфейс. Это обеспечивает более строгий контроль над иерархией типов.