# 基础类型

WARNING

布尔值、数值、字符串、数组、元祖、枚举值

any、void、null、undefined、never、object、类型断言

  • 布尔类型

let bool: boolean = false

let bool2: boolean
bool2 = true

1
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
  • 字符串类型
let str1: string
str1 = 'abc'
1
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
  • 元祖类型

可以简单理解为数组的扩展,元祖是固定长度和类型的

// 一一对应,不能多也不能少
let tuple1: [string, number, boolean]
tuple1 = ['1', 1, false]
1
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
  • any 类型

任何类型都可以

let value1: any
value1 = 'abc'
value1 = 123
value1 = false
1
2
3
4
  • void 类型

什么类型都不是,没有明确的指定类型

let consoleText = (text: string): void => {
	// 什么都不返回
}
1
2
3

可以把 nullundefined 赋值给 void


let v: void
v = undefined
v = null // 这里需要修改配置项里的 stirctNullChecks 
1
2
3
4
  • null 和 undefined

既是类型,又是值。是其他类型的子类型。

let u:undefined
u = undefined
let n:null
n = null
1
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
  • object 类型
let obj = {
	name: '江小鱼'
}

function getObject(obj: object):void {
	console.log(obj)
}
1
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
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