Как работают строковые литералы в TypeScript
Development, Java | Комментировать запись
В 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: TypeScript