一、Typescript 数据类型
Typescript中为了使编码规范和利于维护,增加了类型校验,在typescript中主要提供了一下数据类型
- 布尔类型
- 数字类型
- 字符串类型
- 数组类型
- 元组类型
- 枚举类型
- renyileix
- null 和 undefined
- void类型
- never类型
1、布尔类型
//js写法
var flag = true;
flag = 456;
typescript中为了使编码规范,增加了类型校验,写ts代码必须指定类型
var flag:boolean = true;
flag =123 //报错误
/*-------------正确做法----------*/
var flag:boolean = true;
flag = false //正确写法
2、数字类型
//js写法
var flag = 123;
flag = "hello,world";
var flag:number = 123;
flag = "hello,world"; //报错误
/*-------------正确做法----------*/
var flag:number = 123;
flag = 456 //正确写法
3、字符串类型
//js写法
var flag ="hello,world";
flag = 132 ;
var flag ="hello,world";
flag = 132 ; //报错误
/*-------------正确做法----------*/
var flag:string ="hello,world";
flag = "你好,世界" ; //正确写法
4、数组类型
//js中
var arr =['1','2','3']
数组类型(array) ts中定义数组有两种方式
//第一种定义数组的方式
var arr:number[] = [11,22,33];
var arr:number[] = [11,22,'33'];//报错
//第二种定义数组的方式
var arr:Array<number>=[11,22,33,44]
5、元组类型(tuple) 属于数组的一种
let arr:[number,string] = [123,'this is ts']
6、枚举类型(enum),对js标准数据类型的一个补充,枚举类型可以为一组数值赋予友好的名字
/*enum 枚举名{
标识符[=整型常数],
标识符[=整型常数],
...
标识符[=整型常数],
}*/
enum Color { Red , Green, Blue };
let colorName : string = Color[1]
alert(colorName) //如果类型为字符串,则会输出其下标值的内容
let colorName3 :Color = Color[2]
//不能将类型“string”分配给类型“Color”。
/*----------------------------------------------------------------*/
let colorName1 :Color = Color.Red
alert(colorName1) //如果类型为enum,则会输出其属性的下标值
let colorName2 :string = Color.Red
//不能将类型“Color.Red”分配给类型“string”。
编译为js的时候代码是这样的
var Color;
(function (Color) {
Color[Color["Red"] = 0] = "Red";
Color[Color["Green"] = 1] = "Green";
Color[Color["Blue"] = 2] = "Blue";
})(Color || (Color = {}));
;
var colorName = Color[3];
alert(colorName);
用的最多的就是状态码
7、任意类型 any 与es5中没有指定类型有点相似
任意类型的用处
-
比如来自用户输入或第三方代码库
-
在对现有代码进行改写的时候,any类型是十分有用的,它允许你在编译时可选择地包含或移除类型检查。 你可能认为 Object有相似的作用,就像它在其它语言中那样。 但是 Object类型的变量只是允许你给它赋任意值 - 但是却不能够在它上面调用任意的方法,即便它真的有这些方法:
-
let notSure: any = 4;
notSure.ifItExists(); // okay, ifItExists might exist at runtime
notSure.toFixed(); // okay, toFixed exists (but the compiler doesn’t check)
let prettySure: Object = 4;
prettySure.toFixed(); // Error: Property ‘toFixed’ doesn’t exist on type ‘Object’.
```
-
当你只知道一部分数据的类型时,any类型也是有用的。 比如,你有一个数组,它包含了不同的类型的数据:
-
let list: any[] = [1, true, "free"]; list[1] = 100;
8、null 和 undefined 类型 —> 其他(never)类型数据类型的子类型
let u:undefined = undefined;
let a:null = null ;
var num:number|null|undefined //--->这个叫做联合类型
9、void类型 像是与any类型相反,他表示没有任何类型,当一个函数没有返回值是,你通常会见到其返回值类型是void:
function warnUser():void {
alert("this is my warning mesage")
}
声明一个void
类型的变量没什么大用处,因为你只能赋予他undefined
和null
10、Never类型 表示那些从不存在的值得类型 —>这意味着声明never的变量只能被never类型所赋值
var a:never;
a = 123 ; //错误写法
a= (() => {
throw new Error('错误')
}())