Как работают строковые литералы в TypeScript

В TypeScript литеральные типы позволяют определять типы, которые принимают только определенный строковый литерал. Такие типы полезны, потому что позволяют устанавливать ограничения для допустимых строковых значений переменных. Этот механизм гораздо проще объяснить с помощью коротких примеров кода, поэтому перейдем от слов к делу.

Давайте рассмотрим пример того, как определять и использовать типы строковых литералов:

let pet: 'cat';

pet = 'cat'; // Ok
pet = 'dog'; // Compiler error

Сами по себе строковые литералы не так уж полезны, но в сочетании с Union-типами все становится гораздо интереснее:

let pet: 'cat' | 'dog';

pet = 'cat'; // Ok
pet = 'dog'; // Ok
pet = 'zebra'; // Compiler error

Примечание: Union-типы – это составной тип данных, который получается при комбинировании нескольких типов данных в один. Подробнее об использовании Union-типов в TypeScript можно почитать здесь.

По мере работы строковые литералы могут становиться довольно длинными (к примеру, когда вы используете их в нескольких местах в коде). В таком случае на помощь приходят псевдонимы типов. Скрывая несколько типов за одним идентификатором, псевдонимы повышают читабельность исходного кода.

Псевдоним типов объявляется с помощью ключевого слова type, после которого следует идентификатор (то есть сам псевдоним, в нашем примере это Pet). После этого ставится символ =, а за ним – типы, для которых предназначен данный псевдоним.

type Pet = 'cat' | 'dog' | 'hamster';

let pet: Pet;

pet = 'cat'; // Ok
pet = 'dog'; // Ok
pet = 'hamster'; // Ok
pet = 'alligator'; // Compiler error

Примечание: Псевдонимы типов нельзя реализовывать, расширять и использовать с операторами typeof и instanceof. Если присвоить псевдоним типа объекту, то попытка собрать его выдаст ошибку.

Читайте также: Преимущества TypeScript

Tags:

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