TS 工具类型 Partial、Required、Readonly、Exclude、Extract、Omit、ReturnType

392 阅读1分钟
  1. Partial 部分类型
insterface User {
    id: string;
    name: string;
}

const user: User = {
    name: 'zs'   // 报错了,必须要有id,但是这是上传到服务器,id必须是服务器给的
}
// 解决:
const user: Partial<User> = {  // Partial,直接把User的key变为了可选的
    name: 'zs'
}
  1. Required 必填类型
insterface User {
    id?: string;
    name: string;
}
const user: Required<User> = {  // Required,直接把User的key变为了必填
    name: 'zs'
}
  1. Readonly 只读类型
insterface User {
    id: string;
    name: string;
}
const user: Readonly<User> = {  // Readonly,直接把User的key变为了只读
    id: '111',
    name: 'zs'
}
user.id = '222'  // 报错
  1. Exclude 排除类型 --- 接收的是基本类型
type Dir = '东' | '南' | '西' | '北'
type Dir2 = Exclude<Dir, '北'>   // 排除 Dir 中的 '北'
  1. Extract 提取类型
type Dir = '东' | '南' | '西' | '北'
type Dir2 = Extrace<Dir, '东' | '北'>   // 保留 Dir 中的 '东'和'北'
  1. Pick/Omit 排除 key 类型 --- 接收的是对象
insterface User {
    id: string;
    name: string;
    age: number
}

insterface God1 = {
    id: string;
    name: string;
}

type God2 = Pick<User, 'id' | 'name'>    // Pick 获取指定的属性,其余的排除(要User里面的id和name,不要age)
==================================
Pick的反向操作 Omit
type God2 = Pick<User, 'age'>  // Omit 指定排除的属性(不要User的age,其余全部都要)

  1. ReturnType 返回值类型
function f(a: number, b: number){
    return a + b
}
type A = ReturnType<type f>   // 可以获取到一个函数的返回值类型