Создание сложных типов: 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