所有 TypeScript 中内置的泛型类型(Generic Utility Types)

所有 TypeScript 中内置的泛型类型(Generic Utility Types)


1. Awaited<Type>

说明:获取 Promise 类型中 resolve 的值类型。

ts 复制代码
type A = Awaited<Promise<number>>; // A: number

2. Partial<Type>

说明:将对象类型的所有属性变为可选。

ts 复制代码
interface User { name: string; age: number; }
type PartialUser = Partial<User>; // { name?: string; age?: number; }

3. Required<Type>

说明:将对象类型的所有属性变为必选。

ts 复制代码
interface User { name?: string; age?: number; }
type RequiredUser = Required<User>; // { name: string; age: number; }

4. Readonly<Type>

说明:将对象类型的所有属性变为只读。

ts 复制代码
interface User { name: string; }
type ReadonlyUser = Readonly<User>; // { readonly name: string; }

5. Record<Keys, Type>

说明:创建一个对象类型,key集合由 Keys 指定,值的类型是 Type。

ts 复制代码
type Scores = Record<'math' | 'english', number>; // { math: number; english: number; }

6. Pick<Type, Keys>

说明:从对象类型中选择一组属性,组成新的类型。

ts 复制代码
interface User { name: string; age: number; sex: string; }
type NameAndAge = Pick<User, 'name' | 'age'>; // { name: string; age: number; }

7. Omit<Type, Keys>

说明:从对象类型中去除一组属性,剩下一组属性组成新类型。

ts 复制代码
interface User { name: string; age: number; sex: string; }
type UserWithoutAge = Omit<User, 'age'>; // { name: string; sex: string; }

8. Exclude<UnionType, ExcludedMembers>

说明:从联合类型中排除一组类型,生成新的联合类型。

ts 复制代码
type T = Exclude<'a' | 'b' | 'c', 'a'>; // 'b' | 'c'

9. Extract<Type, Union>

说明:从联合类型中提取出所有可以赋值给 Union 的成员。

ts 复制代码
type T = Extract<'a' | 'b' | 'c', 'a' | 'f'>; // 'a'

10. NonNullable<Type>

说明:去除类型中的 null 和 undefined。

ts 复制代码
type T = NonNullable<string | number | undefined>; // string | number

11. Parameters<Type>

说明:获取函数参数类型组成的元组类型。

ts 复制代码
function foo(a: number, b: string): void {}
type T = Parameters<typeof foo>; // [number, string]

12. ConstructorParameters<Type>

说明:获取构造函数的参数类型组成的元组类型。

ts 复制代码
class Person { constructor(age: number, name: string) {} }
type T = ConstructorParameters<typeof Person>; // [number, string]

13. ReturnType<Type>

说明:获取函数返回值的类型。

ts 复制代码
function foo(): boolean { return true }
type T = ReturnType<typeof foo>; // boolean

14. InstanceType<Type>

说明:获取构造函数实例的类型。

ts 复制代码
class Person {}
type T = InstanceType<typeof Person>; // Person

15. NoInfer<Type>

说明:阻止类型参数被自动推断,常用于类型约束和高级类型体操中。

ts 复制代码
function foo<T, U = NoInfer<T>>(arg: T, value: U): [T, U] { return [arg, value]; }

16. ThisParameterType<Type>

说明:获取函数的 this 参数类型。

ts 复制代码
function fn(this: Date, x: number) {}
type T = ThisParameterType<typeof fn>; // Date

17. OmitThisParameter<Type>

说明:返回删除 this 参数后的函数新类型。

ts 复制代码
function fn(this: Date, x: number) { }
type T = OmitThisParameter<typeof fn>; // (x: number) => void

18. ThisType<Type>

说明:指定对象字面量中 this 的类型(只在对象字面量中有用)。

ts 复制代码
type Obj = { x: number } & ThisType<{ y: string }>;
// obj.y 的类型将被推断为 string

Intrinsic String Manipulation Types

字符串内置操作类型

a. Uppercase<StringType>

说明:将字符串类型全转为大写。

ts 复制代码
type Str = Uppercase<'abc'>; // "ABC"
b. Lowercase<StringType>

说明:将字符串类型全转为小写。

ts 复制代码
type Str = Lowercase<'ABC'>; // "abc"
c. Capitalize<StringType>

说明:将字符串类型首字母大写。

ts 复制代码
type Str = Capitalize<'hello'>; // "Hello"
d. Uncapitalize<StringType>

说明:将字符串类型首字母小写。

ts 复制代码
type Str = Uncapitalize<'Hello'>; // "hello"

相关推荐
拖孩1 小时前
AI 帮我写的小程序「厨菜记」上线满月了,挣了两百块!!!
前端·后端·微信小程序
用户360055579001 小时前
Kestrel_VLLM - 13 · 为什么排除 MoE FFN Tiling 与 Tensor Core
前端
Hilaku1 小时前
AI 流式输出都用 SSE,什么时候必须换 WebSocket?
前端·javascript·程序员
奇牙coding1 小时前
Codex CLI 升级后多文件编辑静默失效:config.yaml 枚举变更排查与修复指南
java·前端·javascript·ai
小羊没烦恼!1 小时前
Ajax与JSON的一些总结
android·java·前端·数据库·mysql·算法·okhttp
程序员老赵1 小时前
Docker 部署 Filestash:轻松搭建浏览器文件管理平台
前端·docker·开源
夏天要喝冰可乐1 小时前
给 23 万字修仙小说造个阅读站:浏览器内打包 EPUB 分页阅读 + 三主题实战
前端·产品·全栈
茶底世界之下1 小时前
林间步道要不要加暗角?用 Awaking 把强度收在20%
前端·ios·图片资源
执子念的飞鱼1 小时前
纯前端预览 275 种文件格式是怎么做到的
前端·vue.js·react.js
行者全栈架构师2 小时前
【鸿蒙心迹】互动卡片全链路——把核心功能放到桌面(FormKit 实战)(HarmonyOS 7.x)
前端·算法·架构