跳到主要内容

TypeScript 字符串字面量类型

摘要:在本教程中,你将了解 TypeScript 字符串字面量类型,这些类型定义接受指定字符串字面量的类型。

字符串字面量类型允许定义一种仅接受一个指定字符串字面量的类型。

以下定义了接受字符串 '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 字符串字面量类型定义接受指定字符串文字的类型。
  • 将字符串字面量类型与联合类型和类型别名结合使用来定义接受有限字符串文字集的类型。