Skip to content

Latest commit

 

History

History
24 lines (19 loc) · 734 Bytes

README.md

File metadata and controls

24 lines (19 loc) · 734 Bytes
  1. 使用对象上所有属性可选

    interface IUser {
      name: string
      age: number
    }
    type TUser = Partial<IUser>
    // { name?: string; age?: number }
  2. 使用 extends 和 infer 推断所需类型

// 得到 Promise 函数 resolve 类型
type ApiResponse<F> = F extends (...args: any[]) => Promise<infer T> ? T : never
ApiResponse<() => Promise(string[])> // string[]

// 得到 Record key 的类型
type RecordKeyType<T> = T extends Reacord<infer K, V> ? K : never
RecordKeyType<{a: string; b: string}> // "a" | "b"