和 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 之外的类型。