TypeScript速查表
TypeScript语法速查表,涵盖基础类型、接口、泛型、类型守卫、工具类型、装饰器等核心语法参考。
📝 基础类型
| 类型 | 说明 |
|---|---|
string | 字符串类型 |
number | 数字类型(整数和浮点数) |
boolean | 布尔类型(true/false) |
Array<T> / T[] | 数组类型 |
[T1, T2, ...] | 元组类型,固定长度和类型的数组 |
enum | 枚举类型,用于定义命名常量集合 |
any | 任意类型,关闭类型检查(不推荐) |
unknown | 未知类型,安全的any(使用前需类型断言) |
void | 无返回值类型,常用于函数 |
never | 永不返回类型,用于抛出异常或无限循环 |
null / undefined | 空值和未定义类型 |
object | 非原始类型对象 |
symbol | 唯一标识符类型 |
bigint | 大整数类型 |
🔗 接口与类型
| 语法 | 说明 |
|---|---|
interface User { name: string } | 定义接口 |
type User = { name: string } | 定义类型别名 |
name?: string | 可选属性 |
readonly id: number | 只读属性,不可修改 |
[key: string]: any | 索引签名,允许任意属性 |
interface B extends A | 接口继承 |
type C = A & B | 交叉类型,合并多个类型 |
type Status = "active" | "inactive" | 字符串字面量联合类型 |
type Pair = [string, number] | 类型别名定义元组 |
🔄 泛型
| 语法 | 说明 |
|---|---|
function id<T>(arg: T): T | 泛型函数 |
const id = <T,>(arg: T): T => arg | 箭头函数泛型写法 |
class Box<T> { value: T } | 泛型类 |
<T extends HasLen> | 泛型约束,限制类型参数范围 |
<T = string> | 泛型默认值 |
interface Repo<T> { get(): T } | 泛型接口 |
type Result<T, E = Error> | 泛型类型别名(带默认参数) |
keyof T | 获取类型T的所有键的联合类型 |
🏗️ 类与面向对象
| 语法 | 说明 |
|---|---|
class Person { name: string } | 定义类 |
implements Interface | 实现接口 |
extends BaseClass | 继承父类 |
abstract class Shape | 抽象类,不能直接实例化 |
abstract area(): number | 抽象方法,子类必须实现 |
public name | 公共属性(默认) |
private id | 私有属性,仅类内部可访问 |
protected data | 受保护属性,子类可访问 |
readonly created: Date | 只读属性,构造后不可修改 |
static count | 静态属性,属于类本身 |
constructor(private name: string) | 参数属性简写,自动声明并赋值 |
🛡️ 类型守卫
| 语法 | 说明 |
|---|---|
typeof x === "string" | typeof类型守卫 |
x instanceof Date | instanceof类型守卫 |
"name" in obj | in操作符类型守卫 |
function isStr(x: unknown): x is string | 自定义类型守卫函数 |
asserts x is string | 断言函数,不返回值但缩窄类型 |
x as string | 类型断言(强制指定类型) |
<string>x | 类型断言尖括号语法(JSX中不可用) |
🧰 工具类型
| 类型 | 说明 |
|---|---|
Partial<T> | 将T所有属性变为可选 |
Required<T> | 将T所有属性变为必选 |
Pick<T, K> | 从T中选取指定属性组成新类型 |
Omit<T, K> | 从T中排除指定属性组成新类型 |
Record<K, V> | 构造键为K、值为V的对象类型 |
Readonly<T> | 将T所有属性变为只读 |
Exclude<T, U> | 从联合类型T中排除可赋值给U的类型 |
Extract<T, U> | 从联合类型T中提取可赋值给U的类型 |
Infer<T> | 在条件类型中推断类型 |
NonNullable<T> | 从T中排除null和undefined |
ReturnType<T> | 获取函数类型T的返回类型 |
Parameters<T> | 获取函数类型T的参数类型元组 |
🎯 高级类型
| 语法 | 说明 |
|---|---|
A | B | 联合类型,A或B之一 |
A & B | 交叉类型,同时满足A和B |
T extends U ? X : Y | 条件类型 |
{ [K in keyof T]: V } | 映射类型,遍历T的属性生成新类型 |
`${A}_${B}` | 模板字面量类型 |
as const | 将字面量推断为最窄类型 |
type Unpacked<T> = T extends (infer U)[] ? U : T | 使用infer进行类型推断 |
type DeepPartial<T> | 深度递归Partial(需递归类型定义) |
✨ 装饰器
| 类型 | 说明 |
|---|---|
@Component({...}) | 类装饰器,用于修饰类 |
@Log | 方法装饰器,用于修饰方法 |
@Validate | 属性装饰器,用于修饰属性 |
@Param("id") | 参数装饰器,用于修饰方法参数 |
@sealed | 装饰器工厂,返回装饰器的函数 |
experimentalDecorators: true | tsconfig.json中启用装饰器支持 |
emitDecoratorMetadata: true | 启用装饰器元数据反射 |
关于TypeScript
TypeScript是JavaScript的超集,通过静态类型系统提高了代码的可维护性和可读性。掌握这些类型系统特性可以帮助你编写更安全、更健壮的代码。建议结合VS Code获得最佳开发体验。