使用Pycharm调试ts文件

New Configurations选择Node.js

Node Parameters写上--require ts-node/register

生成基于Express的代码结构

typeorm init --name MyProject --database mysql --express

知识点

联合类型

它允许变量、函数参数、返回值等接受多种不同类型的值

语法

type UnionType = Type1 | Type2 | ... | TypeN;

可以用于变量、函数参数、数组

// 变量
let value: string | number;

// 函数参数
function printValue(value: string | number) {}

// 数组
let arr: (string | number)[];

接口与类型别名 interface type

语法

接口

interface Person {
name: string;
age: number;
}

类型别名

type Person = {
name: string;
age: number;
}

扩展方式

接口使用extends

接口 extends 接口

类型别名使用&

type C = A & B

合并声明

interface允许多次声明,并且自动合并

interface User { name: string }
interface User { age: number }
// 最终 User 包含 name 和 age

类型别名则不允许重复声明

泛型约束 extends

在封装函数/组件的时候,会常常用到泛型来拓展封装的内容

有时不是所有的泛型都能使用,因此引入泛型约束概念

用法

function example<T extends ConstraintType>(arg: T): T {
// T 必须是 ConstraintType 的子类型
}

// 具体
function example<T extends string | number>(arg: T): T {
// T 必须是 ConstraintType 的子类型
}

类型操作符

keyof T

获取对象类型 T 的所有公共键(属性名)的联合类型。

用法

type KeysOfT = keyof T;

会返回 T 的所有键名(key)组成的联合类型

interface Person {
name: string;
age: number;
address: string;
}

type PersonKeys = keyof Person;
// 等价于:type PersonKeys = "name" | "age" | "address"