声明变量

类型书写时必须是小写

  1. let num: number = 0;

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

  1. let num = 0;

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

函数声明

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

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

联合类型

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

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

  1. let sex: "male" | "female";
  2. sex = "male";
  3. 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. let data:unknown;
  2. data = "str";
  3. let str: string = "unknown"
  4. if(typeof data === "string"){
  5. str = data;
  6. }

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

类型断言

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

  1. let data:unknown;
  2. data = "str";
  3. let str: string = "unknown";
  4. str = data as string;
  1. str = <string>data

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

void

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

  1. function fn(): void{
  2. }

nerve

没有值

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

常用于程序报错

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. enum Gender {
  3. Female,
  4. Male
  5. }
  6. let user: {name: string, gender: Gender};
  7. user = {
  8. user: 'admin',
  9. gender: Gender.Male
  10. }
  11. if(user.gender === Gender.Male) {}

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

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

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

类型别名

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

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