TS(TypeScript)基础知识一:数据类型(变量)声明| 8月更文挑战

430 阅读2分钟

布尔类型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