1、对象类型声明
直接声明成object用处不大,因为js中一切皆对象
let a:object; a={}; a=function(){};
A:指定对象中可以包含哪些属性
语法: let 变量名{属性名:属性值,属性名1:属性值1} 表示对象的格式必须一模一样
let b:{ name:string }; b={ name:'xdclass' };
B:对象包含必须有的属性,也包含可有可无的属性
// 我们指定的对象它必须包含一个name,但是还有age和sex这个俩个变量是可能有可能有没有的,这种情况我们该怎样做呢? let c:{ name:string, age?:number, sex?:string } c={ name:'xdclass', age:12 }
C:对象包含必须有的属性,其他的所有属性可有可无
// 当我们只知道我们必须有的属性,而其他的不必须我们不知道,我们该怎么处理呢? let d:{ name:string, [propName:string]:unknown } d={ name:'xdclass', sayHello(){ console.log(this.name); } } console.log(d.name); if (typeof d.sayHello === 'function'){ d.sayHello(); }
2、数组类型声明
数组类型声明的语法:
第一种: let 变量名:类型名[];
第二种: let 变量名:Array<类型名>;
let a:string[]; a[0]='xdclass'; a[1]=true; //报错 let b:Array<boolean>; b[0]=false; b[1]='xdclass'; //报错
如果你想创建一个能存储任意类型的数组
let e:Array<any>;
let e:any[];
3、扩展类型tuple
let h:[string,string]; //这就表示我定义一个元组,在这个元组中有两个值,第一个值是string类型。第二个值也是string
let a:[string,boolean,number]; //在这个元组中有三个值,第一个值是string类型,第二个值是boolean类型,第三个值是number类型
let a:[string,boolean,number]; a=['xdclass',true,123];
4、枚举enum的声明
1)数字枚举,默认情况下,第一个枚举值是0,后续枚举值依次+1
enum Color { red, blue, yellow } console.log(Color.red) //0 console.log(Color.blue) //1 console.log(Color.yellow) //2
2)字符串枚举
enum b{ red='红', yellow='黄', blue='蓝' } console.log(b.red); //红 console.log(b.yellow); //黄 console.log(b.blue); //蓝
5、联合类型声明以及类型别名
1)变量的联合类型:一个变量的值可以是有限个数据类型
let a:number|string; a=123; a='xdlcass';
2)常量的联合类型:一个变量的取值,只能是有限个常量,类似枚举
let b:12|13|14|15; b=12; b=15; b=16; //报错
3)类型别名:常量联合类型的复用
// let a:1|2|3|4|5|6|7|8|9|10; // let b:1|2|3|4|5|6|7|8|9|10; type myType=1|2|3|4|5|6|7|8|9|10; let a:myType; let b:myType;