1.单一基本数据类型 (以number 示例)
var a:number=123;
//指定a变量的类型是number,以后这个变量只能保存number类型的数据
const b='hello';
var c=222;
console.log(a);// 123
a=c;
console.log(a);// 222
// a=b; 报错,无法存储number以外的数据类型
2.联合类型
// 联合类型 自定义一个新的类型manyType
type manyType = number | boolean | string;
//manyType 可以保存number/boolean/string三种数据类型
let x: manyType;
x = true;
console.log(x);// true
3.类型推论:
没有声明类型的变量被赋值一次后,变量的类型就确定了,之后再次被赋值时,不可改变赋值的类型。
let y=10;
// y='string'; 报错,y现在只能储存number类型
console.log(y);//10
4.数组:有两种声明数组的方法
let arr1:number[];//只能放number的数组
let arr2:Array<string|number>;//可以放string或number的数组
5.元组:表示一个已知元素数量和类型的数组
let tom:[string, number] = ['Tom', 25];
//通过下标赋值
tom[0] = 'ori';
tom[1] = 18;
tom.push('male');
// tom.push(true);//报错,当添加越界的元素时,它的类型会被限制为元组中每个类型的联合类型
console.log(tom); //[ 'ori', 18, 'male' ]
//解构赋值
const [myname, myage]: [string, number] = ["羽毛",456];
console.log(myname, myage);// 羽毛 456
6.枚举 :
是对JS标准数据类型的一个补充。 使用枚举类型可以为一组数值赋予友好的名字。
枚举成员会被赋值为从 0 开始递增的数字,同时也会对枚举值到枚举名进行反向映射,也可以手动的指定成员的数值;
//性别 一般是存储为数字的
enum Gender {Secret, Male, Female};
console.log(Gender.Male); // 1
//一周的每天
enum Days {Sun, Mon, Tue, Wed, Thu, Fri, Sat};
console.log(Days.Sun, Days.Mon, Days.Tue, Days.Sat);//0 1 2 6
console.log(Days["Sun"] === 0); // true
console.log(Days[6] === "Sat"); // true
//商品的状态 可以手动设置初识值 或 每个都设置具体的值
enum orderStatus {Car=55, Order, Payed, Deliver, Receive=10, Comment, Return};
console.log(orderStatus.Car, orderStatus.Payed,orderStatus.Comment);//55 57 11
7.対象:
let obj:object = [1, 2, 3]
console.log(obj);
obj= {id:1, name:'情緒'};
console.log(obj);
8.接口:
interface Person{
readonly name:string,//只读属性
age:number,
car?:string,//可选属性
//除了可选属性,其他不可缺少,也不能多去添加
}
let p1:Person;
p1={name:"起飞",age:18,car:"奔驰"}
console.log(p1);
let p2:Person;
p2={name:"哈哈",age:25}
// p2={name:"哈哈",car:"奔驰"} 报错
// p2={name:"哈哈",car:"奔驰",zz:555} 报错
console.log(p2);
9.any:
任何类型都是any的子类型,any类型的任何成员都是any类型
interface Dog{
[asd:number]:any
//属性名必须为number,属性值为any类型,并且没有数量限制
}
let d1:Dog;
d1={0:"asd",8:123}
console.log(d1);