TypeScript的字符串字面量类型

什么是 TypeScript 的字符串字面量类型?

字符串字面量类型(String Literal Types)是指可以将变量的类型限定为某个特定的字符串字面量。例如:

let click: 'click';

此时,变量 click⁠ 只能被赋值为⁠'click'⁠,否则会报错。


如果给字符串字面量类型变量赋予其他值会怎样?

如果尝试将除 'click'⁠ 以外的字符串赋值给 ⁠click⁠:

// 编译错误
click = 'dblclick';

TypeScript 编译器会报错:

Type ‘“dblclick”’ is not assignable to type ‘“click”’.


字符串字面量类型有什么实际用途?

它可以用来限制变量的取值范围,提升类型安全。如,限制事件类型只能是某几个特定的字符串。


如何结合联合类型(Union Types)使用字符串字面量类型?

可以用联合类型(后续会介绍)将多个字符串字面量类型组合起来,限定变量只能取这些值之一:

let mouseEvent: 'click' | 'dblclick' | 'mouseup' | 'mousedown';
mouseEvent = 'click';      // 有效
mouseEvent = 'dblclick';   // 有效
mouseEvent = 'mouseup';    // 有效
mouseEvent = 'mousedown';  // 有效
mouseEvent = 'mouseover';  // 编译错误

如果字符串字面量类型在多个地方用到,如何避免重复?

可以使用类型别名(type alias)来简化代码:

type AsanMouseEvent = 'click' | 'dblclick' | 'mouseup' | 'mousedown';
let mouseEvent: AsanMouseEvent;
let anotherEvent: AsanMouseEvent;

这样可以复用类型定义,减少冗余。


  • 如果你觉得我的工作对你有帮助,可以通过分享这篇文字或者关注同名公众号来支持我,你的支持是我持续创作的最大动力:
    image

  • 转载以及引用请注明原文链接

  • 本博客所有文章除特别声明外,均采用CC 署名-非商业使用-相同方式共享 许可协议。

posted @ 2025-05-27 07:17  Asanwos  阅读(22)  评论(0)    收藏  举报