前置不定参数以及类型关联

// 前置参数类型
type A = 'string' | 'boolean'

// 类型关联MAP
type B = {
    'string': string
    'boolean': boolean
}

type C<T extends A[]> = {
    [I in keyof T]: B[T[I]]
}

declare function demo<T extends A[]>(...args: [
    ...T,
    (...args: C<T>) => any
]): void

demo('string', 'boolean', (a, b) => {}) // a类型: string, b类型: boolean
demo('boolean', 'string', (a, b) => {}) // a类型: boolean, b类型: string
posted @ 2024-03-07 19:32  梦羽微澜  阅读(8)  评论(0编辑  收藏  举报