🔷
TypeScript 速查表
TS 类型注解、接口、泛型、工具类型、类型体操常用技巧速查
TypeScript 速查表
基础类型
let name: string = "小明";
let age: number = 25;
let isActive: boolean = true;
let nothing: null = null;
let undef: undefined = undefined;
let anyValue: any = "anything"; // 尽量不用
let unknown: unknown = 42; // 比 any 安全
let never: never; // 永不返回值(抛错/无限循环)
let big: bigint = 100n;
// 数组
let nums: number[] = [1, 2, 3];
let strs: Array<string> = ["a", "b"];
// 元组
let pair: [string, number] = ["小明", 25];
// 枚举
enum Color { Red, Green, Blue }
enum Status { Active = "ACTIVE", Inactive = "INACTIVE" }函数
function add(a: number, b: number): number {
return a + b;
}
const greet = (name: string): string => `Hello, ${name}`;
// 可选参数
function greet(name: string, title?: string): string { }
// 默认参数
function greet(name: string = "世界"): string { }
// rest 参数
function sum(...nums: number[]): number { }
// 函数类型
type Calc = (a: number, b: number) => number;
const multiply: Calc = (a, b) => a * b;接口与类型别名
interface User {
name: string;
age: number;
email?: string; // 可选
readonly id: number; // 只读
[key: string]: any; // 索引签名
}
type Point = {
x: number;
y: number;
};
// 联合类型
type Status = "pending" | "success" | "error";
// 交叉类型
type AdminUser = User & { role: "admin" };泛型
function identity<T>(arg: T): T { return arg; }
interface Box<T> {
value: T;
}
// 约束
function longest<T extends { length: number }>(a: T, b: T): T {
return a.length > b.length ? a : b;
}
// keyof
function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
return obj[key];
}工具类型
Partial<User> // 所有属性可选
Required<User> // 所有属性必填
Readonly<User> // 所有属性只读
Pick<User, "name" | "age"> // 选几个属性
Omit<User, "id"> // 排除几个属性
Record<string, User> // { [key: string]: User }
Exclude<A | B, B> // 排除联合类型中的成员
Extract<A | B, B> // 提取联合类型中的成员
NonNullable<T | null> // 排除 null 和 undefined
ReturnType<typeof fn> // 函数返回类型
Parameters<typeof fn> // 函数参数类型
Awaited<Promise<T>> // Promise 解包类型类型守卫
// typeof
if (typeof value === "string") { }
// instanceof
if (value instanceof Date) { }
// in
if ("name" in obj) { }
// 自定义类型守卫
function isString(value: unknown): value is string {
return typeof value === "string";
}
// 断言
const el = document.querySelector("#app") as HTMLDivElement;
const el2 = <HTMLDivElement>document.querySelector("#app"); // JSX 中不用