# 类型别名和字符串字面量类型

发布时间 2023-12-26 12:01:13作者: 我是ed

类型别名和字符串字面量类型

参考资料:https://ts.xcatliu.com/advanced/type-aliases.html

类型别名

类型别名用来给一个类型起一个新的名字。

比如说,我们声明一个字符串变量:

let str:string = '我是ed.'

好,完成了,但是我比较矫情,觉得定义类型的时候 string 比较长,我受不了,打字太多了,我们就可以给 string 这个类型换一个名字:

type s = string  // 给类型添加一个别名,使用 type 关键字

这个时候呢,我们再使用 string 声明类型的时候就可以写成 s 了:

let str: s = '我是ed.'

ok,这就是类型别名的内容,这样的话更加的简洁,同时鼠标一上去可以看到,他依旧是 string 类型:

在这里插入图片描述

当然如果重新赋值成其他类型,和使用 string 一样,都是会报错的:

在这里插入图片描述

所以说,类型别名的性质没有变,只是重新起了个名字而已,用法都是一样的。

总结: 我们使用 type 创建类型别名。类型别名常用于联合类型

比如说,为我们有下面一段代码:

let num1: string | number | boolean = '123'
let num2: string | number | boolean = true

我们可以看到哈,两个变量的联合类型是完全一样的,这样写就显得有点麻烦了吧?这时候可以使用类型别名进行重命名:

type all = string | number | boolean  // 类型别名
let num1: all = '123'
let num2: all = true

OK,简单好多是不是,修改维护起来也比较方便了。

字符串字面量类型

字符串字面量类型用来约束取值只能是某几个字符串中的一个。

假设哈,爸爸要给孩子起名字,有几个备选的名字:张三丰、张益达、张大炮。取的名字只能从这三个里面选择一个!

这时候我们可以用 type 创建一个字面量类型:

type stringType = '张三丰' | '张益达' | '张大炮'
let name: stringType = "张三丰"

这时候,name 只能从字面量三个字符串中赋值,如果修改成别的值,将会报错:

在这里插入图片描述

定义好了字符串字面量类型之后,你只能从中取一个。