和JS相比,TS最大的区别就是其规范了定义的变量的类型,使得程序在运行前就可以在语法层面来判断传递的数据类型是否是合法的等。

布尔值

let isDone: boolean = true;

数字

所有数字都是浮点数,这些浮点数的类型是 number , 除了支持十进制和十六进制字面量,TypeScript还支持ECMAScript 2015中引入的二进制和八进制字面量。

十进制

let decLiteral: number = 6;

十六进制

let hexLiteral: number = 0xf00d;

二进制

let binaryLiteral: number = 0b1010;

八进制

let octalLiteral: number = 0o744;

字符串

可以使用双引号( ")或单引号(')表示字符串。

let projectName: string = "notebook";

数组

let list: number[] = [1, 2, 3];

let list: Array<number> = [1, 2, 3];

元组 Tuple

元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。

let x: [string, number] = ['hello', 10];

枚举

enum 类型是对JavaScript标准数据类型的一个补充。

基础使用

enum Color {
    Red, 
    Green, 
    Blue
}
let color: Color = Color.Green;

上面color的值是1,默认情况下,从0开始为元素编号。

当然,你也可以手动修改:

enum Color {Red = 1, Green, Blue}

或者,全部都采用手动赋值:

enum Color {Red = 2, Green = 4, Blue = 10}

非数字编号

enum Color { Red = "#f00", Green = "#0f0", Blue = '#00f' }
温馨提示:此时,必须全部都采用手动赋值。

此时,Color.Green的值就是字符串"#0f0"。

Any

有时候,你无法确定一个变量的类型的时候,那么我们可以使用 any 类型来标记这些变量:

let myValue: any;

Void

声明一个 void 类型的变量没有什么大用,因为你只能为它赋予undefined和null,一般我们在定义一个函数没有返回值的时候会使用:

function doit(): void {
    console.log("这个函数不会有返回值");
}

Null 和 Undefined

本身的意义也不是很大,记住一点:默认情况下 null 和 undefined 是所有类型的子类型,就是说你可以把null和undefined赋值给任意类型的变量。

strictNullChecks

如果你修改了ts的配置,比如在tsconfig.json中:

{
    compilerOptions:{
        "strictNullChecks": true
    }
}

上述开启了严格的空值类型检查,那么null和undefined只能赋值给void和它们各自。

Never

表示的是那些永不存在的值的类型,比如一定抛出错误或死循环函数的返回值。下面是个例子:

function error(message: string): never {
    throw new Error(message);
}

Object

object 表示非原始类型,也就是除number,string,boolean,symbol,null或undefined之外的类型。


zxl20070701
136 声望14 粉丝