Use case: Filtering items
The result type of the filterProducts function, without Extract, would be Product[], even though we know that the resulting array won't contain items that don't satisfy the condition
We can use type predicates and generic constraints to improve that