# 基础类型
WARNING
布尔值、数值、字符串、数组、元祖、枚举值
any、void、null、undefined、never、object、类型断言
- 布尔类型
let bool: boolean = false
let bool2: boolean
bool2 = true
1
2
3
4
5
6
2
3
4
5
6
提醒
1、TS中凡是在冒号后面,都是在声明类型和实际的逻辑没太大关系
2、如果变量的声明和赋值是同时进行的,TS可以自动对变量进行类型检测
- 数值类型
所有的数值都是浮点数,所以只有一个 number 类型
let num1: number = 123
// 二级制
num1 = 0b1111011
// 八进制
num1 = 0o173
// 十六进制
num1 = 0x7b
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
- 字符串类型
let str1: string
str1 = 'abc'
1
2
2
- 数组类型
// 写法1
let arr1: number[]
arr1 = [1, 2, 3]
// 写法2
let arr2:Array<number>
let arr3: (string | number)[]
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
- 元祖类型
可以简单理解为数组的扩展,元祖是固定长度和类型的
// 一一对应,不能多也不能少
let tuple1: [string, number, boolean]
tuple1 = ['1', 1, false]
1
2
3
2
3
- 枚举类型
// 序列号默认从 0 开始,也可以自己指定值
enum Roles {
SUPER_ADMIN, // 0
AMDMIN, // 1
USER // 2
}
console.log(Roles[2], 'Roles') // USER
1
2
3
4
5
6
7
2
3
4
5
6
7
- any 类型
任何类型都可以
let value1: any
value1 = 'abc'
value1 = 123
value1 = false
1
2
3
4
2
3
4
- void 类型
什么类型都不是,没有明确的指定类型
let consoleText = (text: string): void => {
// 什么都不返回
}
1
2
3
2
3
可以把 null 和 undefined 赋值给 void
let v: void
v = undefined
v = null // 这里需要修改配置项里的 stirctNullChecks
1
2
3
4
2
3
4
- null 和 undefined
既是类型,又是值。是其他类型的子类型。
let u:undefined
u = undefined
let n:null
n = null
1
2
3
4
2
3
4
- never 类型
表示那些永远不存在的值的类型,是任意类型的子类型。但never不是任何类型的子类型。
let errorFunc = (message: string): never => {
throw new Error(message)
}
let infiniteFunc = (() => {
// 死循环,不可能有返回值,never
while (true){}
})()
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
- object 类型
let obj = {
name: '江小鱼'
}
function getObject(obj: object):void {
console.log(obj)
}
1
2
3
4
5
6
7
2
3
4
5
6
7
- 类型断言
有点儿像类型转换,即强行指定为要指定的类型。
// target 可能是 string 也可能是 number
let getLength = (target) => {
if (target.length || target.length === 0) {
return target.length
} else {
return target.toString().length
}
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
let getLength = (target: string | number): number => {
// 类型断言
if ((<string>target).length || (target as string).length === 0) {
return (target as string).length
} else {
return target.toString().length
}
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8