一、概述
任何编程语言(除了汇编,汇编只规定数据的字长),都有属于自己的数据类型,数据类型背后,隐藏的是编译器或者程序解释器对数据处理方式的定义。在定义数据的类型的时候,提前定义好数据的类型,可以极大的提高程序的执行效率,减少内存空间的不必要消耗。说到数据类型,JavaScript一直被列为弱类型(var)的语言,需要注意的是。弱类型不代表没有类型,希望通过今天的学习,大家对JavaScript数据类型有一个新的认识,同时也对JavaScript超集的(TypeScript)的数据类型有一个对比的认识。
二、Javascript数据类型
数据类型包括两种:数值类型和引用类型
2.1 基本数据类型(值类型)
所有基本类型的值都是不可改变的。而变量是可以变的,它可以通过指针重新指向一个新的基本类型的值,JavaScript中的六大基本数据类型
- 字符串类型(string):字符串型。
- 数字类型(number):包括浮点数,以及 NaN、±Infinity。
- 布尔类型(boolean):布尔型,即 { true, false }。
- 符号类型(symbol):符号类型。
- null 和 undefined
2.2 复杂数据类型(引用类型)
复杂数据类型的值在创建的时候会开辟一片堆内存,堆内存有一个可后续方便索引的16进制的地址。之后赋值时,JavaSCript引擎会通过指针将变量指向其对应的可索引地址来完成赋值操作。
- object
- Array-
- Function
- Date ,
- Regexp ...
三、TypeScript数据类型
typescript是JavaScript的扩展,说到js的数据类型,大家肯定会想到它是一种弱类型的语言,不需要指定特定的数据类型,ts的语言也正在往java这些强类型的语言靠近,TypeScript中除了es5中的string、boolean、number、array、null和undefined之外还多了元组类型tuple、枚举类型enum、任意类型any、void类型、never类型。
- 字符串类型(string):字符串型。
- 数字类型(number):包括浮点数,以及 NaN、±Infinity。
- 布尔类型(boolean):布尔型,即 { true, false }。
- 数组类型(array)
- 元组类型(tuple)
- 枚举类型(enum)
- 任意类型(any)
- null 和 undefined
- void类型
- never类型
四、使用案例
- TS定义布尔类型(boolean)
let isShow:boolean=false; isShow = true; console.log(isShow);
- TS定义number类型(number)
let age:number=18;
- TS定义字符串类型(string)
let str:string="圣诞节快乐!"
- TS定义数组类型,这有两种方法(array)
const arr1:string[]=["张三","李四","王五"]; const arr2:Array<string>=["张三","李四","王五"];
-TS 定义元组类型,元组类型也是数组类型的一种,如下(tuple)
const arr3:[number,string] = [2,'this is typescript'];
- TS定义枚举类型(enum)
enum Result{success=1,error=0} let r:Result = Flag.success; console.log(r);// 1
- 当一个元素可能是null,可能是undefined,可能是number
let num:number| null|undefined; num=123; console.log(num);//123 num=null; console.log(num);//null num=undefined; console.log(num);//undefined
- ts的void一般只用于定义函数的时候用
function run():void{ alert("aaa"); } run() function run1():number{ return 123 } run1();
- ts中的never类型表示从不会出现的值包括undefined和null,一般很少用到