TypeScript 入门
类别: TypeScript GettingStarted 标签: TypeScript GettingStarted目录
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