目录

TypeScript 安装

安装 tsc,它是 TypeScript 的编译器。

npm i -g typescript

查看版本

tsc -v
Version 5.5.3

安装 ts-node,它是 TypeScript 的运行时。

npm i -g ts-node

查看版本

ts-node -v
v10.9.2

Hello World

使用 tsc --init 命令快速创建一个 tsconfig.json 文件。

tsc --init

Created a new tsconfig.json with:                                                                                       
                                                                                                                     TS 
  target: es2016
  module: commonjs
  strict: true
  esModuleInterop: true
  skipLibCheck: true
  forceConsistentCasingInFileNames: true


You can learn more at https://aka.ms/tsconfig

创建一个 hello.ts 文件。

function hello(name: string) {
  console.log(`Hello, ${name}!`);
}

hello("TypeScript");

使用 tsc 命令编译 hello.ts 文件。

tsc hello.ts

编译后生成一个 hello.js 文件。

function hello(name) {
    console.log("Hello, ".concat(name, "!"));
}
hello("TypeScript");

注意:指定转译的目标文件后,tsc 将忽略当前应用路径下的 tsconfig.json 配置,因此我们需要通过显式设定如下所示的参数,让 tsc 以严格模式检测并转译 TypeScript 代码。

tsc hello.ts --strict --alwaysStrict false

使用 ts-node hello.ts 命令直接运行 TypeScript 文件。

ts-node hello.ts
Hello, TypeScript!

类型

字符串(string)

let firstname: string = 'Captain';                              // 字符串字面量
let familyname: string = String('S');                           // 显式类型转换
let fullname: string = `my name is ${firstname}.${familyname}`; // 模板字符串

数字(number)

let integer: number = 6;            // 十进制整数
let integer2: number = Number(42);  // 显式类型转换
let decimal: number = 3.14;         // 十进制浮点数
let binary: number = 0b1010;        // 二进制整数
let octal: number = 0o744;          // 八进制整数
let hex: number = 0xf00d;           // 十六进制整数
let big: bigint =  100n;            // 大整数

bigint 类型是在 ECMAScript 2020 中引入的。因此您需要确保 TypeScript 的编译目标(target)设置为 ES2020 或更高版本,通过修改 tsconfig.json 文件来实现。

{
  "compilerOptions": {
    "target": "ES2020",
    "module": "commonjs",
    "strict": true,
    "esModuleInterop": true
  }
}

布尔(boolean)

let isDone: boolean = false;        // 布尔值
let isTrue: boolean = Boolean(1);   // 显式类型转换

Symbol

Symbol 类型的值是独一无二的,不可变的,并且主要用于对象属性的键,提供了一种创建私有或唯一的属性标识符的方法。

let sym1: symbol = Symbol('key');
let sym2: symbol = Symbol('key');
sym1 == sym2    // false

数组(Array)

let list: number[] = [1, 2, 3];     // 数字数组
let list2: Array<number> = [1, 2];  // 数字数组

元组(Tuple)

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

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

any

任意值(Any)用来表示允许赋值为任意类型。

let notSure: any = 4;
notSure = 'maybe a string instead';
let bool: boolean = notSure;

unknown

未知类型(Unknown)是 TypeScript 3.0 中引入的新类型,它是安全的 any 类型。

let userInput: unknown;
let userName: string;

userInput = 5;
userInput = 'Max';
userName = userInput;  // Error