个人瞎搞之 typescript获取指定位置处的参数类型

type GetIndexType_0<T> = T extends [infer T0, ...infer TS] ? T0 : never;



type GetIndexType_1<T> = T extends [infer T0, infer T1, ...infer TS] ? T1 : never;




interface GetIndexType<T> {
    0: GetIndexType_0<T>
    1: GetIndexType_1<T>
}


type GetPar<T extends (...args: any) => any, TI extends keyof GetIndexType<any>> = T extends (...args: infer TS) => any
    ? GetIndexType<[...TS]>[TI]
    : never;


function f(n: number, s: string, re: RegExp) {

}


let n: GetPar<typeof f, 0>;

let s: GetPar<typeof f, 1>;

 

貌似typescript暂时不能跟C++一样能够进行模板循环,所以只能跟C#一样把模板手动写出来,我只写了取前两个参数的

 

posted @ 2021-04-04 08:56  FfD4edyo  阅读(262)  评论(0)    收藏  举报