基本类型

声明变量

类型书写时必须是小写

1
let num: number = 0;

声明一个 number 类型的数据 num
num 就只能赋值 number 类型的数值,否则就会报错

1
let num = 0;

TS 会自动将变量声明成第一次赋值数据的类型

函数声明

1
2
3
function sum(a: number,b: number): number{
return a + b;
}

在调用方法时
传入的参数必须是 number 类型的,返回值数据的类型也必须是 number 类型的
且参数个数必须是两个,否则会报错

联合类型

1
2
3
4
let sex: number | string | boolean;
sex = 0;
sex = "female";
sex = false;

sex 变量可以接收 number、string、boolean 三种类型的数据

1
2
3
let sex: "male" | "female";
sex = "male";
sex = "female";

sex 变量只能设置成 male 或 female 这两个值

数据类型

any

any 表示任意数据类型,相对于 TS 放弃了对 data 变量的数据检测,最好不用

1
let data: any;
1
let data;

只声明变量不指定变量类型和赋值,TS 默认将 data 设置成 any

unknown

可以用来代替 any 实现指定变量任意类型的功能

1
let data: unknown;

unknown 是未知类型,相对于 data 也可以设置任意类型的数据类型
data 但不能直接赋值给其他变量

1
2
3
4
5
6
7
let data:unknown;
data = "str";
let str: string = "unknown"

if(typeof data === "string"){
str = data;
}

需要判断数据类型才能进行赋值

类型断言

告诉解析器变量的实际类型

1
2
3
4
5
let data:unknown;
data = "str";
let str: string = "unknown";

str = data as string;
1
str = <string>data

和上面的写法效果是相同的

void

常用于指定函数返回值类型
当函数没有返回值时,就可以给函数设置 void

1
2
function fn(): void{
}

nerve

没有值

1
2
3
function fn(): nerve{
throw new Error("error!")
}

常用于程序报错

object

不实用,万物皆对象

1
let obj: object;
1
let user: {name: string, age?: number};

这种写法相对于来说更加的常用
用来指定对象中可以包含那些属性,不能多也不能少

在属性后面加上 ‘?’,使这个属性变为可选项,不写也不会报错

1
let user: {name: string, [porpName: string]: any};

表示 user 对象除了 name 属性外,可设置任意数量的属性,并且属性值不做限制
[porpName: string] 表示用数组来接收属性,数组没有做限制,所以属性个数也没有限制
any 表示属性值,any 类型,属性值自然没有做限制

1
let fn: (a:number, b:number) => number;

表示 fn 是一个函数,并且有两个参数,两个参数都是 number 类型的
函数的返回值也是 number 类型的数据

array

数组

1
let arr: string[];

表示 arr 是一个字符串数组;数组中的数据必须全都是 string 类型的

1
let arr: Array<string>;

效果和上面的写法是一致的

tuple

元组,固定长度的数组,效率大于数组

1
let tp: [string, number];

tp 元组只能接收两个数据,第一个是 string 类型,第二个是 number 类型
需要多少个数据,设置多少个数据
元组的数据一般不多,不然可以直接用数组了

enum

枚举

1
2
3
4
5
6
7
8
9
10
11
12
13
/* 定义枚举 */
enum Gender {
Female,
Male
}

let user: {name: string, gender: Gender};
user = {
user: 'admin',
gender: Gender.Male
}

if(user.gender === Gender.Male) {}

枚举就是将全部的可能性保存起来
实质上,Female 是 0,Male 是 1,枚举自动将这些数据转成数字

1
2
3
4
5
enum Gender {
Female = 0,
Male = 1
}

枚举中的数据对应的数字也可以自定义

类型别名

将一种类型用一个名称来代替

1
2
type myType = string | number;
let num : myType;