В этом руководстве вы узнаете о типах строковых литералов 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 для определения типов, которые принимают конечный набор строковых литералов.