npm i typescript -g // ts 全局包
npm i ts-node -g // 使用 ts-node 直接运行 ts 文件
将 TypeScript 转换为 JavaScript 代码:
tsc test.ts
使用 node 命令来执行 test.js 文件:
$ node test.js
声明为 any 的变量可以赋予任意类型的值
let any1: any = 4
console.log(any1); // 4
any1 = false
console.log(any1); // false
any1 = undefined
console.log(any1); // undefined
TS 的 number 类型继承了 ES6 的 number,额外支持二进制和八进制数值
let decLiteral: number = 6; // 十进制
let hexLiteral: number = 0xf00d; // 16进制
let binaryLiteral: number = 0b1010; // 二进制
let octalLiteral: number = 0o744; // 八进制
console.log(decLiteral, hexLiteral, binaryLiteral, octalLiteral)
// 输出
// 6 61453 10 484
可以使用单引号(')、双引号(")来表示字符串类型
使用反引号(`)来定义多行文本和内嵌表达式
let name: string = "Faker";
let title: string = `Hello, I am ${ name }`;
表示逻辑值:true 和 false
let flag: boolean = true;
声明变量为数组
// 在元素类型后面加上 []
let arr: number[] = [1, 2, 3];
// 或者使用数组泛型
let arr: Array<number> = [1, 2, 3];
元组与数组相似,但元组每一项的数据类型可以不同(而数组需要使用 any 类型才可以实现每一项类型不同)
let x: [string, number];
x = ['Faker', 1]; // 运行正常
x = [1, 'Faker']; // 报错
console.log(x[0]); // 输出 Faker
用于定义数值集合
enum Color {Red, Green, Blue};
let c: Color = Color.Blue;
console.log(c); // 输出 2
表示没有任何类型,方法无返回值时可以使用此类型
function hello(): void {
alert("Hello Faker");
}
表示对象值缺失
let a: undefined = undefined
console.log(a); // undefined
用于初始化变量为一个未定义的值
let b: null = null
console.log(b); // null
never 是其它类型(包括 null 和 undefined)的子类型,代表从不会出现的值,这意味着声明为 never 类型的变量只能被 never 类型所赋值,在函数中它通常表现为抛出异常或无法执行到终止点(例如无限循环)
let x: never;
// 运行错误,数字类型不能转为 never 类型
x = 123;