字面量类型
字面量在代码中表示固定值。在 TypeScript 中,字面量包括字符串、数值、布尔值、长整型值、对象、数组、函数、正则表达式、null
等,例如,以下都是字面量。
99.9 //数值字面量
true //布尔值字面量
"message" //字符串字面量
[3] //数组字面量,数组会在后面详细介绍
{a:"hello"} //对象字面量,对象会在后面详细介绍
基于字面量,创建字面量类型,字面量类型可以理解为仅表示固定值的类型,其定义方式如下。
let 变量名称:字面量;
示例代码如下。
//变量number1为字面量99.9类型
let number1: 99.9 = 99.9;
//变量boolean1为字面量true类型
let boolean1: true = true;
//变量bigint1为字面量111n类型
let bigint1: 111n = 111n;
//变量string1为字面量"hello"类型
let string1: "hello" = "hello";
字面量类型的变量只能被赋予字面量值,如果尝试给以上变量赋其他值,就会引起编译错误,示例代码如下。
//编译错误:不能将类型"false"分配给类型"true"。ts(2322)
number1 = 1;
//编译错误:不能将类型"false"分配给类型"true"。ts(2322)
boolean1 = false;
//编译错误:不能将类型"222n"分配给类型"111n"。ts(2322)
bigint1 = 222n;
//编译错误:不能将类型""world""分配给类型""hello""。ts(2322)
string1 = "world";
除此之外,我们还可以使用联合字面量类型,使字面量类型支持多个值,各个值用竖线 “|” 分隔。例如,以下代码将变量 number1
声明为 1、2、3 字面量类型,因此取值只能为 1、2、3 中的一个,如果赋其他值,会引起编译错误。
let number1: 1 | 2 | 3;
number1 = 1;
number1 = 2;
number1 = 3;
//编译错误:不能将类型"4"分配给类型"1 | 2 | 3"。ts(2322)
number1 = 4;