一、string字符串
// 声明一个变量a,同时指定他的类型为stringvar a:string;
二、number数字
// 声明一个变量a,同时指定他的类型为numbervar a:number;// a的类型设置为了number,在以后的使用过程中a的值只能是数字a=10;a=33;// a="hello";var b:string;b="hello";// b=123
三、boolean布尔值
如果变量的声明和赋值是同时进行的,TS可以自动对变量进行类型检测
// var c:boolean = false;// 如果变量的声明和赋值是同时进行的,TS可以自动对变量进行类型检测var c = true;// var c = 10;
四、function函数
设置传参数据类型以及返回值数据类型设置函数结构的类型声明: 语法:(形参:类型,形参:类型 ...) => 返回值function sums(a:number,b:number):number{ return a+b}let d: (a: number, b: number) => number;d = function (n1: number, n2: number) { return n1 + n2}
/* function sum(a,b){ return a+b}console.log(sum(123,456)); //579console.log(sum(123,"456")); //123456 */function sums(a:number,b:number):number{ return a+b}console.log(sums(123,456));// console.log(sums(123,"456"));var result = sums(123,456)// var result = sums(123,"456")
五、字面量声明
使用字面量进行类型声明,表面该变量只能是声明时的值,或者使用|声明多个类型
// 也可以使用字面量进行类型声明let a: 10;a = 10;a = 11;let b: "male" | "female"b = "male";b = "female";// b="hello"let c: boolean | string;c = true;c = "hello"
六、any任意类型
any 表示的是任意类型,一个变量设置为any后相当于对该变量关闭了TS的类型检测// let d --声明变量如果不指定类型,则TS解析器会自动判断变量的类型为any(隐式any)// d的类型是any,它可以赋值给任意变量使其改变类型!!!不建议使用
// any 表示的是任意类型,一个变量设置为any后相当于对该变量关闭了TS的类型检测let d:any;d = 10;d = "hello";d = true// unknown 实际上就是一个类型安全的any// unknown类型的变量,不能直接赋值给其他变量let e:unknown;e = 10;e = "hello"e = truelet s:stringe = "hello"//类型断言,可以用来告诉解析器变量的实际类型变量 as 类型<类型>变量s = e as strings = <string>e
七、object对象
// oject表示一个js对象let a: Object{}用来指定对象中可以包含哪些属性语法:{属性名:属性值 ,属性名:属性值}在属性名后面加上?,表示属性是可选的[proName: string]: any 表示除了必须的name属性,可选任意类型的属性
// oject表示一个js对象let a: Objecta = {};a = function () {};// {}用来指定对象中可以包含哪些属性// 语法:{属性名:属性值 ,属性名:属性值}// 在属性名后面加上?,表示属性是可选的let b: { name: string, age?: number };b = { name: "孙悟空", age: 18 };// [proName: string]: any 表示除了必须的name属性,可选任意类型的属性let c: { name: string, [proName: string]: any };c = { name: "猪八戒", age: 18, sex: "男" }
八、数组与元组
数组的类型声明: 类型[] Array<类型>string[] 表示字符串数组number[] 表示数值数组
元组:元组就是固定长度和元素类型的数组 语法:[类型,类型]
/* 数组的类型声明: 类型[] Array<类型>*/// string[] 表示字符串数组let e: string[];e = ['a', 'b', 'c']// number[] 表示数值数组let f: number[];let g: Array<number>g = [1, 2, 3]/* 元组:元组就是固定长度的数组 语法:[类型,类型]*/let h: [string, number];h = ['hello', 123]
九、枚举
enum 枚举enum Gender { Male = 0, Female = 1}&表示同时
/* enum 枚举*/enum Gender { Male = 0, Female = 1}let i: { name: string, gender: Gender }i = { name: '孙悟空', gender: Gender.Male //'male' 自动转化为0传递}console.log(i.gender === Gender.Male);// &表示同时let j: { name: string } & { age: number };j = { name: '孙悟空', age: 18 }// 类型的别名type myType = 1 | 2 | 3 | 4 | 5;let K: myType;let o:myType;o = 3;
十、class类
指定类的属性的类型及方法
class Student{ "name":string; "age":number; constructor(name:string,age:number){ this.name = name; this.age = age } getName():void{ console.log(this.name); }}var s:Student = new Student("张三",18);s.getName();