Строковые литералы в TypeScript с примерами

В этом руководстве вы узнаете о типах строковых литералов TypeScript, которые определяют тип, который принимает указанный строковый литерал.

Типы String Literal позволяют определить тип, который принимает только один указанный строковый литерал.

Определим тип строкового литерала, который принимает литеральную строку 'click' :

let click: 'click';

click — это тип строкового литерала, который принимает только строковый литерал 'click'. Если вы присвоите литеральную строку click click, она будет действительной:

click = 'click'; // valid

Однако, когда вы назначаете click другой строковый литерал, компилятор TypeScript выдает ошибку. Например:

click = 'dblclick'; // compiler error

Ошибка:

Type '"dblclick"' is not assignable to type '"click"'.

Тип строкового литерала полезен для ограничения возможного строкового значения в переменной.

Типы строковых литералов можно хорошо комбинировать с типами объединения, чтобы определить конечный набор значений строковых литералов для переменной:

let mouseEvent: 'click' | 'dblclick' | 'mouseup' | 'mousedown';
mouseEvent = 'click'; // valid
mouseEvent = 'dblclick'; // valid
mouseEvent = 'mouseup'; // valid
mouseEvent = 'mousedown'; // valid
mouseEvent = 'mouseover'; // compiler error

Если вы используете типы строковых литералов в нескольких местах, они будут очень подробными.

Чтобы избежать этого, вы можете использовать псевдонимы типов. Например:

type MouseEvent: 'click' | 'dblclick' | 'mouseup' | 'mousedown';
let mouseEvent: MouseEvent;
mouseEvent = 'click'; // valid
mouseEvent = 'dblclick'; // valid
mouseEvent = 'mouseup'; // valid
mouseEvent = 'mousedown'; // valid
mouseEvent = 'mouseover'; // compiler error

let anotherEvent: MouseEvent;

Заключение

  • Тип строкового литерала TypeScript определяет тип, который принимает указанный строковый литерал.
  • Используйте строковые литералы с типами union и aliases для определения типов, которые принимают конечный набор строковых литералов.
Рейтинг
( Пока оценок нет )
Александр Русаков / автор статьи
Программист, разработчик, 12 лет опыта работы в крупных компаниях. Быстро освоил typescript, делюсь своими знаниями на страницах этого сайта.
Загрузка ...
JavaScript и TypeScript