typeScript中的数据类型
typeScript中的数据类型
- 布尔类型(boolean)
- 数字类型(number)
- 字符串类型(string)
- 数组类型(array)
- 元组类型(tuple)
- 枚举类型(enum)
- 任意类型(any)
- null 和 undefined
- void类型
- never类型
-
Object
布尔类型(boolean)
var flag:boolean=true; // flag=123; //错误 flag=false; //正确 console.log(flag);
数字类型(number)
var num:number=123; num=456; console.log(num); /正确/ //num='str'; //错误
字符串类型(string)
var str:string='hello'; str='hello'; //正确 //str=true; //错误
数组类型(array)
TypeScript像JavaScript一样可以操作数组元素。 有两种方式可以定义数组。 第一种,可以在元素类型后面接上 []
,表示由此类型元素组成的一个数组;第二种方式是使用数组泛型,Array<元素类型>;
// 第一种定义数组的方式 var arr:number[]=[11,22,33]; //内部元素必须为number console.log(arr); //2.第二种定义数组的方式 var arr:Array<number>=[11,22,33]; console.log(arr)
元组类型(tuple)
元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。 比如,你可以定义一对值分别为 string
和number
类型的元组。
var arr:Array<number>=[11,22,33]; console.log(arr) //元祖类型 let list:[number,string,boolean]=[123,'hello',false]; console.log(list);
枚举类型(enum)
enum
类型是对JavaScript标准数据类型的一个补充。使用枚举类型可以为一组数值赋予友好的名字。
enum 枚举名{ 标识符[=整型常数], 标识符[=整型常数], ... 标识符[=整型常数], } ;
enum Flag{success=1,error=0}; let s:Flag=Flag.success; console.log(s);
默认情况下,从0
开始为元素编号。也可以手动的指定成员的数值
枚举类型提供的一个便利是你可以由枚举的值得到它的名字。
enum Flag{success=1,error=0}; let s:string=Flag[1]; console.log(s);
我们看下面a输出的是什么
enum Flag{success,error=4,no}; let a:Flag=Flag.no; console.log(a);
默认的no是没有值得,但是error有值,按上一个值为基准,所以no的值为5,输出a为5
任意类型(any)
var arr:any[]=[1,"str",true] console.log(arr)
制定了任意类型的数组,其内部可以是任意的类型
任意类型的用处
<div id="box"> </div>
此时我们想给这个盒子变成红色,我们在ts中这样写
var box=document.getElementById("box") box.style.color="red"
此时会报错
但是我们指定类型为object之后又报错,是因为基本类型中没有object类型,所以这个时候我们就可以指定类型为any
var box:object=document.getElementById("box")
var box:any=document.getElementById("box") box.style.color="red"
此时就不会报错
null 和 undefined
默认情况下null
和undefined
是所有类型的子类型。
var num:number; //console.log(num) //输出undefined var num2:undefined; console.log(num2) //正确 var num3:number|undefined console.log(num3) //输出undefined var num4:null; num=123//报错
void类型
某种程度上来说,void
类型像是与any
类型相反,它表示没有任何类型。 当一个函数没有返回值时,通常会见到其返回值类型是 void
:
function warnUser(): void { console.log("hello"); }
此时打开浏览器什么也不会输出
never类型
never
类型表示的是那些永不存在的值的类型。never
类型是任何类型的子类型,也可以赋值给任何类型;
var a:undefined //a=123 //报错 //a=null//报错 a=undefined var b:null //a=123 //报错 b=null //b=undefined//报错
var c:never; //a=123//错误 a=(()=>{ throw new Error("错误") })()
Object
object
表示非原始类型,也就是除number
,string
,boolean
,symbol
,null
或undefined
之外的类型。
使用object
类型,就可以更好的表示像Object.create
这样的API
declare function create(o: object | null): void; create({ prop: 0 }); // OK create(null); // OK create(42); // Error create("string"); // Error create(false); // Error create(undefined); // Error