Ни во что не компилируются, нужны только на этапе разработки
Создание интерфейсов и приведение типов
// ОбъявлениеinterfaceRect {readonly id:string// ReadOnly Field color?:string// Необязатеельное поле size: { width:number height:number }}// Создание объектаconstrect1:Rect= { id:'test', size: { width:1 height: 2 }}constrect2:Rect= { id:'test1', size: { width:1 height: 2 }, color:'#ccc'}/** Хоть это и const, но поля мы можем менять, так все компилится в js, а js это позволяет**/rect2.color ='black'// Приведение типовconstrect3= {} asRectconstrect4= <Rect>{} // Старая запись
interfaceIClock { time:DatesetTime(date:Date):void}classClockimplementsIClock { time:Date=newDate()setTime(date:Date):void {this.time = date }}
Интерфейсы с большим количеством ключей
Допустим, мы хотим описать объект с большим количеством полей, и к тому же мы еще не знаем какие поля будут. Для этого есть специальный синтаксис и ключевое слово key: