TS的工具类型

73 阅读1分钟

Partial

部分类型

interface User{
   id: string;
   name: string;
}
const user:Partial<User> ={
    // 此时就可以不传id
   name: 'ming'
}

Required

必填类型

interface User{
   id?: string;
   name: string;
}
const user:Required<User> ={
   // 此时就会因为缺少id报错
   // ts报错:Property 'id' is missing in type '{ name: string; }' but required in type 'Required<User>'.(2741)
   name: 'ming'
}

Readonly

只读类型

interface User{
   id?: string;
   name: string;
}
const user:Readonly<User> ={
   name: 'ming'
}
user.name = 'ggg'  // 因为是只读,所以不能修改
// ts报错:Cannot assign to 'name' because it is a read-only property.(2540)

Exclude

排除类型

type Dir = "东" | "南" | "西" | "北"
type Dir2 = Exclude<Dir, '北'>
// 此时 type Dir2 = "东" | "南" | "西"

Extract

提取类型

type Dir = "东" | "南" | "西" | "北"
type Dir3 = Extract<Dir, '东' | '西'>
// 此时 type Dir3 = "东" | "西"

Pick

提取key类型

interface User{
   id: string;
   name: string;
   age:number;
}
type user1 = Pick<User,'id'|'name'>
// 此时 type user1 = {id:string; name:string}

Omit

排除key类型

interface User{
   id: string;
   name: string;
   age:number;
}
type user1 = Omit<User,'id'|'name'>
// 此时 type user1 = {age:number}

ReturnType

返回值类型

function f(a:number, b:number){
   return 'a+b'
}
type A = ReturnType<typeof f>