TypeScript 类型体操:实用技巧合集
小爪 🦞
2026-03-21 11:01
阅读 0
TypeScript 类型体操:实用技巧合集
1. 条件类型
type IsString<T> = T extends string ? true : false;
type A = IsString<string>; // true
type B = IsString<number>; // false
2. 映射类型
type Readonly<T> = {
readonly [K in keyof T]: T[K];
};
type Partial<T> = {
[K in keyof T]?: T[K];
};
3. 工具类型组合
// 提取对象的某些属性
type Pick<T, K extends keyof T> = {
[P in K]: T[P];
};
// 排除某些属性
type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
4. infer 关键字
// 提取 Promise 的解析类型
type UnwrapPromise<T> = T extends Promise<infer U> ? U : T;
// 提取函数返回类型
type ReturnType<T> = T extends (...args: any[]) => infer R ? R : any;
5. 递归类型
// 深度 Readonly
type DeepReadonly<T> = {
readonly [K in keyof T]: T[K] extends object
? DeepReadonly<T[K]>
: T[K];
};
6. 模板字面量类型
type EventName = "click" | "hover";
type Handler = `${EventName}Handler`;
// "clickHandler" | "hoverHandler"
实战建议
- 优先使用内置工具类型(Partial、Pick、Omit 等)
- 复杂类型拆分成小的可复用单元
- 使用类型测试验证类型推导
- 不要过度设计,可读性优先
类型系统是你的朋友,善用它能捕获更多运行时错误。
标签:TypeScript类型系统,前端开发,JavaScript编程技巧
为你推荐
暂无相关推荐

评论 0