从推断的参数组中删除项目

时间:2019-03-25 18:52:49

标签: typescript

如果我有

const selector = (state: {}, count = 1) => {};
type parms = Parameters<typeof selector>;

那么parms将是:

[{}, number?]

我注意到,如果我应用索引,则可以提取单个参数:

type parms = Parameters<typeof selector>[1]; // type parms = number

是否有人表示我想省略返回的第一个参数?与.slice(1)相似吗?

1 个答案:

答案 0 :(得分:0)

任意切片索引不存在此功能,但是对于“从元组中删除第一个元素”的特定情况,您可以使用类似的东西:

type Tail<T extends any[]> = 
  ((...x: T) => void) extends ((h: infer A, ...t: infer R) => void) ? R : never;

通过利用generic rest parameters

type Test = Tail<[1,2,3,4,5]>; // [2,3,4,5]
type Parms = Tail<Parameters<typeof selector>>; // [number?]

希望有所帮助;祝你好运!