typescript笔记-- 基础类型

一、number:数字类型

  包括十进制的整数,浮点数,八进制和16 进制的数

1 let num:number = 1 // 指定number
2 let num2 = <number>1;//使用断言写法
3 let num3 = 1 as number;//使用断言写法
4 let num4 = 1;//初始不指定类型赋值,ts会推导为number
5 
6 let hexLiteral: number = 0xf00d; //八进制
7 let binaryLiteral: number = 0b1010;//16 进制

 

二、string:字符串类型

1 let str:string = "string"

 

三、boolean: 布尔类型

1 let bl1:boolean = true
2 let bl2:boolean = false

 

四、null  和 undefined:是所有类型的子类型

1 let nu:null = null
2 let un:undefined = undefined

 

五、Array[] 数组

   有两种写法;一种是类型+[], 另一种是泛型写法,Array<类型>

1 let arr1:string[] = ["str"];//普通写法
2 let arr2:Array<number> = [1];// 泛型写法

 

六、元组

  其实也是数组数组,只是它表示已知元素的数量和元素的类型

1 let tu:[string,number,boolean] = ["str",1,false];

 

七、enum 枚举

  枚举的如果没有赋值,默认值为0 开始

 1 //示例1:不赋值
 2 enum Color {Red, Green, Blue}
 3 let colorName: string = Color[1];//利用下标获取,没有指定赋值下标从0开始
 4 console.log(colorName); //Green
 5 
 6 //示例2:赋值
 7 enum TipType { success=0,   fail=1, error=2}
 8 let resS:TipType = TipType.success;//0,
 9 let resF:TipType = TipType.fail;//1
10 let resE:TipType = TipType.error;//2

 

八、any 任意类型

  当一个变量被声明为any类型,ts 不会再做类型检测,就和javascript 一样,可以随便改变数据类型
1 let anyType :any = "string" ;
2 anyType = 1;

 

九. void :空类型

(1.)与any 类型相反,一般在函数没有返回值的时候用到

(2.)声明一个void类型的变量,只能赋值undefined 和null ,所以没多大意义

1 // 在函数没有返回值用
2 function fn():void{}
3 
4 //声明使用
5 let val :void = null;

 

十、never: 不存在值的类型

(1.)  never 是任何类型的字类型,可以赋值给任何类型,但是没有类型可以赋值给它,除了自己 never

(2.)  一般用与那些抛出异常,没有返回值的表达式和箭头函数的返回值类型

1 // 抛出异常的返回值为never 类型
2 function fn1():never{
3     throw new Error("message");
4 }

 

十一、unkown:不知道的类型

(1.) TypeScript 3.0 版本引入的,认为是 top type , 是任何类型的子类型subType 

(2.) 与any 的区别在于,any 既是topType ,也是buttomType,所以any 不会对数据做类型检查,而unkown在使用的时候会检测数据类型 

(3.) 当一个数据为unkown 类型,你又要使用它的使用,你使用断言或者做类型判断才能通过ts 的类型检查,否则会编译错误

1 let data:unknown = 1;//变量赋值给1 ,但是类型还是unknown
2 
3 data = [2,3,4];// 这里又重新赋值给数组,ts 不会报错
4 // let rs1 = data[0];// 这里调用的时候却是报错了,虽然值是数组,但是类型却是unkown,所以调用的时候就会报错
5 let rs2 = (<Array<number>>data)[0];////需要使用断言来重新声明类型
6 
7 data ={a:1};// 这里又重新赋值给对象,ts 不会报错
8 // data.a="string" // 这里获取a报错
9 (<{a:string}>data).a = "12";//使用断言(<>尖括号)或者(as) 关键字都可以

 

 

 

posted @ 2020-08-24 18:10  天高任鸟飞吧  阅读(260)  评论(0编辑  收藏  举报