They describe the shape of an object, including its properties and methods.
They provide a way to implement custom types
In TS, two types are compatible if their internal structure is compatible. This allows us to implement an interface just by having the shape the interface requires, without an explicit implements clause.
Not all properties in an interface are required, each optional property is denoted by a ? at the end of the property name in the declaration.