TypeScript类型 - tuple类型
tuple是元组类型,很多语言中也有这种数据类型,比如Python、Swift等。
const tInfo: [string, number, number] = ['haha', 18, 1.88]
const item1 = tInfo[0] // haha, string类型
const item1 = tInfo[1] // 18,number类型
那么tuple和数组有什么区别呢?
- 首先,数组中通常建议存放相同类型的元素,不同类型的元素是不推荐放在数组中。(可以放在对象或者元组中)
- 其次,元组中每个元素都有自己特性的类型,根据索引值获取到的值可以确定对应的类型
const info: (string|number)[] = ['haha', 18, 1.88]
const item1 = info[0] // 不确定类型
const tInfo: [string, number, number] = ['haha', 18, 1.88]
const item2 = tInfo[0] // 一定是string类型
那么tuple在什么地方使用的是最多的呢?tuple通常可以作为返回的值,在使用的时候会非常的方便。
TypeScript类型 - 联合类型
TypeScript的类型系统允许我们使用多种运算符,从现有类型中构建新类型。联合类型是由两个或者多个其他类型组成的类型。表示可以是这些类型中的任何一个值。联合类型中的每一个类型被称之为联合成员。
function printId(id: number | string) {
console.log(id)
}
printId(10)
printId('abc')
传入给一个联合类型的值是非常简单的:只要保证是联合类型中的某一个类型的值即可。但是我们拿到这个值之后,我们应该如何使用它呢?因为它可能是任何一种类型。比如我们拿到的值可能是string或者number,我们就不能对其调用string上的一些方法。那么我们怎么处理这样的问题呢?我们需要使用缩小(narrow)联合。TypeScript可以根据我们缩小的代码结构,推断出更加具体的类型。
function printId(id: number | string) {
if(typeof id === 'string') {
// 确定id是string类型
console.log(id.toUpperCase())
} else {
// 确定id是number类型
console.log(id)
}
}