类型注释
变量后面带上相关的数据类型
const message: string = '我'
类型推导
即便不显示的声明变量的类型,当你赋予变量初始值时,ts
也会给我们隐式的加上。
TypeScript中的数据类型
1.Number类型
let foo: number = 123
foo = 222
进制
- 0b代表二进制
- 0o代表八进制
- 0x代表十六进制
2.Boolean类型
let foo: boolean = false
foo = true
3.String类型
let foo: string = 'hello ts'
foo = 'hello tss'
4.Array类型
数组里面需要声明里面存放的数据类型
// 字符串型数组
const strArr:string[] = []
5.Object类型
待补充…
6.null和undefined
const nu: null = null
const und: undefined = undefined
7.Symbol类型
待补充…
8.any类型
数据类型是任意的
let message: any = 1
message = '2'
message = {}
9.unknown类型
不确定变量的类型
function foo() {
return 123
}
function bar() {
return '123'
}
let result: unknown
let flag = true
if(flag) {
result = foo()
} else {
result = bar()
}
unknown和any的区别
any
比较灵活,当一个函数期望你传入一个具体的类型时,你传any
类型依旧是可以的,但是传unknown
就是不行的了,unkonwn
类型表示你不确定这个数据的类型,但是这个类型ts
不希望你乱赋值给别的变量,但是any
是可以的
10.void类型
11.never类型
never 类型表示的是那些永不存在的值的类型。
作用:祖师爷的回复:
12.tuple(元祖类型)类型
在声明数组时给予数组中各个元素指定的类型,赋予初始值时需要指定长度,但后续可以push
和pop
,push
也只能push
之前声明的类型
const turple: [number, string] = [1, 'string'];
turple.pop()
console.log(turple);
13.函数类型
函数也是有类型的,个人理解:函数的类型就是你在定义你的函数的时候它的格式
// 期望num1是数字,num2是数字, 函数的返回值是number
// 实际开发中函数的返回类型可以不写,让其自己推导
function sum(num1: number, num2: number): number {
return num1 + num2
}
sum(2,3)
// ----------------------------
type FunType = (num1: number, num2: number) => number
const add: FunType = (num1: number, num2: number) => num1 + num2
console.log(add(4, 3))
14.对象类型
function printPoint(point: { x: number, y: number }) {
console.log(point)
}
printPoint({x: 1, y: 2})
若要属性可选,加个?就行
function printPoint(point: { x: number, y: number, z?: number }) {
console.log(point)
}
printPoint({x: 1, y: 2})
15.联合类型
设定的变量可以有多个类型,但此时对于变量的操作要额外小心,因为你不知道你能拿到你设定的变量它是一个什么样类型的值
function printId(id: string | number) {
console.log(id)
}
类型别名
使用type
关键字给类型起别名
type Point = { x: number, y: number }
function printPoint(point: Point) {
console.log(point);
}
printPoint({ x: 1, y: 2 })
16.字面量类型
字面量类型跟枚举类型有点像,一般跟联合类型结合使用
// aligin只能取'left' | 'center' | 'right'中的一个
type AlignMent = 'left' | 'center' | 'right'
let align: AlignMent = 'algin'
17. 枚举类型
枚举类只能在限定的几个key
值取值,一般key
值大写,枚举类型可读性强
enum Direction {
Left,
Right,
Up,
Down
}
function handleDirection(direction: Direction) {
switch (direction) {
case Direction.Left:
console.log("Go left");
break;
case Direction.Right:
console.log("Go right");
break;
case Direction.Up:
console.log("Go up");
break;
case Direction.Down:
console.log("Go down");
break;
default:
const exhaustiveCheck: never = direction;
}
}