声明变量
类型书写时必须是小写
let num: number = 0;
声明一个 number 类型的数据 num
num 就只能赋值 number 类型的数值,否则就会报错
let num = 0;
TS 会自动将变量声明成第一次赋值数据的类型
函数声明
function sum(a: number,b: number): number{return a + b;}
在调用方法时
传入的参数必须是 number 类型的,返回值数据的类型也必须是 number 类型的
且参数个数必须是两个,否则会报错
联合类型
let sex: number | string | boolean;sex = 0;sex = "female";sex = false;
sex 变量可以接收 number、string、boolean 三种类型的数据
let sex: "male" | "female";sex = "male";sex = "female";
sex 变量只能设置成 male 或 female 这两个值
数据类型
any
any 表示任意数据类型,相对于 TS 放弃了对 data 变量的数据检测,最好不用
let data: any;
let data;
只声明变量不指定变量类型和赋值,TS 默认将 data 设置成 any
unknown
可以用来代替 any 实现指定变量任意类型的功能
let data: unknown;
unknown 是未知类型,相对于 data 也可以设置任意类型的数据类型
data 但不能直接赋值给其他变量
let data:unknown;data = "str";let str: string = "unknown"if(typeof data === "string"){str = data;}
需要判断数据类型才能进行赋值
类型断言
告诉解析器变量的实际类型
let data:unknown;data = "str";let str: string = "unknown";str = data as string;
str = <string>data
和上面的写法效果是相同的
void
空
常用于指定函数返回值类型
当函数没有返回值时,就可以给函数设置 void
function fn(): void{}
nerve
没有值
function fn(): nerve{throw new Error("error!")}
常用于程序报错
object
不实用,万物皆对象
let obj: object;
let user: {name: string, age?: number};
这种写法相对于来说更加的常用
用来指定对象中可以包含那些属性,不能多也不能少
在属性后面加上 ‘?’,使这个属性变为可选项,不写也不会报错
let user: {name: string, [porpName: string]: any};
表示 user 对象除了 name 属性外,可设置任意数量的属性,并且属性值不做限制[porpName: string] 表示用数组来接收属性,数组没有做限制,所以属性个数也没有限制
any 表示属性值,any 类型,属性值自然没有做限制
let fn: (a:number, b:number)=>number;
表示 fn 是一个函数,并且有两个参数,两个参数都是 number 类型的
函数的返回值也是 number 类型的数据
array
数组
let arr: string[];
表示 arr 是一个字符串数组;数组中的数据必须全都是 string 类型的
let arr: Array<string>;
效果和上面的写法是一致的
tuple
元组,固定长度的数组,效率大于数组
let tp: [string, number];
tp 元组只能接收两个数据,第一个是 string 类型,第二个是 number 类型
需要多少个数据,设置多少个数据
元组的数据一般不多,不然可以直接用数组了
enum
枚举
/* 定义枚举 */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,枚举自动将这些数据转成数字
enum Gender {Female = 0,Male = 1}
枚举中的数据对应的数字也可以自定义
类型别名
将一种类型用一个名称来代替
type myType = string | number;let num : myType;
