Создание сложных типов: Interfaces
Ни во что не компилируются, нужны только на этапе разработки
Создание интерфейсов и приведение типов
// Объявление
interface Rect {
readonly id: string // ReadOnly Field
color?: string // Необязатеельное поле
size: {
width: number
height: number
}
}
// Создание объекта
const rect1: Rect = {
id: 'test',
size: {
width: 1
height: 2
}
}
const rect2: Rect = {
id: 'test1',
size: {
width: 1
height: 2
},
color: '#ccc'
}
/*
* Хоть это и const, но поля мы можем менять, так все компилится в js, а js это позволяет
**/
rect2.color = 'black'
// Приведение типов
const rect3 = {} as Rect
const rect4 = <Rect>{} // Старая записьНаследование интерфейсов
Классы и интерфейсы
Интерфейсы с большим количеством ключей
Допустим, мы хотим описать объект с большим количеством полей, и к тому же мы еще не знаем какие поля будут. Для этого есть специальный синтаксис и ключевое слово key:
Last updated