For your first example. In your html, you are saying product has the property description (which it does not on type Object)
In your second example. You are initially defining product as an empty object
product: ProductInterface = {};
Which is missing the required fields of the interface. So you can remove the initialization, leaving
product: ProductInterface;
Also as others have noted, you do not need the Object<> syntax