布尔类型boolean、数字类型number、字符串类型string、任意类型any、null类型、undefined、object类型
// 只需要在声明的变量后面跟上类型描述; 注:在变量声明时需要在后面紧跟着赋值,不然都默认未undefined
var bool:boolean = true;
var num:number = 123;
var str:string = '123';
let an:any = 12;
let num5:null = null;
let num:undefined ;
let num3:undefined = undefined;
let num3:object = {a:1};
特例:特殊的声明方式
let num1:undefined ;
let num2:number | undefined;
let num2:boolean | number | string | any | null | undefined;
void类型
在方法名后面紧跟数据类型,表示函数方法的返回值类型。
注:void表示无返回值;
function run():void{
console.log(123)
};
function main():number{
return 123;
}
never类型
never类型为其他类型(包含其他所有类型)的子类型;表示的是不会出现的;
情况1: 返回never的函数必须存在无法达到的终点
function infiniteLoop(): never {
while (true) { }
}
情况2:永远无法到达的情况(参考youyuxi的例子)
在这个例子中 最后一个else中的分支条件是永远不可能出现的,同时任何never之外的其他类型都是不可以赋值个never类型的;
所以假如 将来对代码做了更改,改变了a的类型。比如改成了boolean类型,并赋值为false就会达到最后一个分支并报错;
var a: number = Math.random();
if(a>0.5){}
else if(a<0.5){}
else if(a==0.5){}
else {var b: never = a }
数组类型
数组类型需要对数组之内的每一项做出限制,相对于上面的基础类型来说多出了一层限制;
声明方式一:使用修饰类型加尖括号
var arr:Array<number> = [1,2,3]; 尖括号内为数组内容的类型
var arr0:Array<any> = ['str',2,true];
声明方式二:使用修饰类型加中括号(中括号表示数组)
var arr1:number[] = [1,2,3];
var arr2:any[] = ['str',1,true];
元组类型tuple
tuple属于数组类型的一种;要求更加严格,必须要一一对应
var arr:[number,boolean] = [1,true]; 必须要一一对应
枚举类型
声明方式:enum 后面自定义变量名;
注:如果没有声明值;默认为下标、前面的声明了值之后后面的加1 这里的undefined等都是默认转换为string;
enum Err{
undefined=1,
null,
"str" = 2
}
var e:Err = Err.null;
console.log(e)//2
var e1:Err = Err.undefined;
console.log(e1)//1
元素编号应该避免冲突
因为我们可以根据编号倒退处编号对应的枚举名
var name: string = Err[1];
console.log(name);
// 显示'undefined'因为上面代码里它的值是1