一、数据类型
- TypeScript中为了使编写的代码更规范,更有利于维护,增加了类型校验,在typescript中主要给我们提供了以下数据类型
- 布尔类型(boolean)
- 数字类型(number)
- 字符串类型(string)
- 数组类型(array)
- 元祖类型(tuple)
- 枚举类型(enum)
- 任意类型(any)
- null和undefined
- void类型
- never类型
二、类型详解
1、布尔类型(boolean)
var flag: boolean = true;flag = 123; // 错误flag = false; // 正确
2、数字类型(number)
var num: number = 123;num = 456; // 正确num = 'str'; // 错误
3、字符串类型(string)
var str:string = 'this is ts';str = 'haha'; // 正确str = true; // 错误
4、数组类型(array)ts中定义数组有两种方式
var arr = ['1', '2']; // es5定义数组1.第一种定义数组的方式var arr: number[] = [11, 22, 33];var arr: string[] = ['a', 'b', 'c'];2.第二种定义数组的方式var arr: Array<number> = [11, 22, 33];var arr: Array<string> = ['a', 'b', 'c'];
5、元组类型(tuple)属于数组的一种
注:元组类型可以指定数组里面每个元素的类型var arr:[number,string]=[123,'this is ts'];
6、枚举类型(enum)
- 随着计算机的不断普及,程序不仅只用于数值计算,还更广泛地用于处理非数值的数据。
例如:性别、月份、星期几、颜色、单位名、学历、职业等,都不是数值数据。
在其它程序设计语言中,一般用一个数值来代表某一状态,这种处理方法不直观,易读性差。
如果能在程序中用自然语言中有相应含义的单词来代表某一状态,则程序就很容易阅读和理解。
也就是说,事先考虑到某一变量可能取的值,尽量用自然语言中含义清楚的单词来表示它的每一个值,
这种方法称为枚举方法,用这种方法定义的类型称枚举类型。 ```typescript // 枚举类型定义语法 enum 枚举名 { 标识符[= 整型常数], 标识符[= 整型常数], … };
列子1: enum Flag { success = 1, error = -1 } var f: Flag = Flag.success console.log(f); // 输出:1 如果标识符没有赋值 它的值就是下标
列子2: enum Color { blue, red = 3, orange }; var c: Color = Color.red; console.log(c); // 3 var c: Color = Color.orange; console.log(c); // 4 orange 默认没有值,所有它就以上一个red为基准顺延
<a name="f32e920c"></a>##### 7、任意类型(any)```typescriptvar num: any = 123;num = 'str'; // 正确num = true; // 正确任意类型的用处:其实不加any也可以实现,但是会有警告var oBox: any = document.getElementById('box');oBox.style.color = 'red';
8、null 和 undefined
- 是其他(never)类型的子类型 ```typescript var num: number; console.log(num); // 输出:undefined,但是会有警告
var num: undefined; console.log(num); // 输出:undefined,没有警告
// 定义没有赋值就是 undefined var num: number | undefined num = 123; console.log(num); // 输出:123,没有警告
// 一个元素可能是 number类型 可能是 null 可能是 undefined var num: number | null | undefined; num = 1234; console.log(num);
<a name="6560a040"></a>
##### 9、void 类型
- typescript 中的 void 表示没有任何类型,一般用于定义方法的时候方法没有返回值。
```typescript
// es5的定义方法
function run() {
console.log('run');
}
run();
// 正确写法:表示方法没有返回值
function run(): void {
console.log('run');
}
run();
// 正确写法
function run(): number {
return 123;
}
run();
10、never 类型
- 是其他类型 (包括 null 和 undefined)的子类型,代表从不会出现的值。这意味着声明never的变量只能被never类型所赋值。 ```typescript var a: undefined; a = undefined; // 正确,只能赋值 undefined var b: null; b = null; // 正确,只能赋值 null
// 正确写法 a = (() => { throw new Error(‘错误’); })()
never 一般用不到,可以使用any来替代 ```
