TypeScript: Обобщения

Назад | Учебник TypeScript | Вперёд

Обобщения или generics в TypeScript имеют определённое сходство с обобщениями в Java.

Посмотрите на код ниже:

В нашем Lair может жить inhabitant любого типа, так как мы указали тип any. Проблема в том, что мы не знаем, какого типа inhabitant живёт в нашем Lair в текущий момент. Мы можем проверить тип на этапе выполнения, но на этапе компиляции информация о типе отсутствует. Мы можем присвоить значение любого типа переменной inhabitant, а значит, мы должны ожидать значение любого типа, когда мы считываем значение из inhabitant.

Обобщёнными могут быть не только классы, но и обычные функции:

Иногда бывает нужно использовать обобщённый тип, но при этом заранее известно, что этот параметр типа будет дочерним к какому-то определённому типу, метод которого нам нужно использовать. В этом случае мы можем использовать ограничения:

Обратите внимание на то, как мы объявили функцию process:

Мы указали T extends Monster, чтобы ограничить параметр типа T только классом Monster и его наследниками. Теперь при компиляции будет проверяться, что передаваемый аргумент является экземпляром класса Monster или его наследником.

Можно создавать фабричные методы, принимающие параметр типа в качестве аргумента:

TypeScript позволяет задать ограничение одного параметра типа на основе другого параметра типа. Например, в примере выше мы указываем, что параметр типа K должен быть существующем полем в параметре типа T:

В принципе, написанного мной по TypeScript уже должно быть достаточно для написания простейших программ.

Назад | Учебник TypeScript | Вперёд

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *