Typescript
常用内置类型
Partial<T>
把所有属性变成可选
type User = {
name: string
age: number
}
type PartialUser = Partial<User>
// 等价于: { name?: string; age?: number }Required<T>
把所有属性变成必填
type User = {
name?: string
age?: number
}
type FullUser = Required<User>
// { name: string; age: number }Readonly<T>
把所有属性变成只读
type User = {
name: string
}
const u: Readonly<User> = { name: 'Tom' }
u.name = 'Jerry' // ❌ 报错,name 是只读的Pick<T, K>
从 T 中挑选某些属性组成新类型
type User = {
name: string
age: number
email: string
}
type BasicInfo = Pick<User, 'name' | 'email'>
// { name: string; email: string }Omit<T, K>
从 T 中移除某些属性组成新类型
type User = {
name: string
age: number
email: string
}
type NoEmail = Omit<User, 'email'>
// { name: string; age: number }Record<K, T>
构造一个键值对类型
type Roles = 'admin' | 'user' | 'guest'
type RolePermissions = Record<Roles, boolean>
// 等价于:{ admin: boolean; user: boolean; guest: boolean }Exclude<T, U>
从 T 中排除 U 的类型
type T = Exclude<'a' | 'b' | 'c', 'a'>
// 'b' | 'c'Extract<T, U>
从 T 中提取 U 的类型
type T = Extract<'a' | 'b' | 'c', 'a' | 'b'>
// 'a' | 'b'NonNullable<T>
移除 null 和 undefined
type T = NonNullable<string | null | undefined>
// stringReturnType<T>
获取函数返回值类型
function getUser() {
return { name: 'Tom', age: 25 }
}
type User = ReturnType<typeof getUser>
// { name: string; age: number }