gpt4 book ai didi

typescript - 从推断参数元组中删除项目

转载 作者:行者123 更新时间:2023-12-03 16:13:38 26 4
gpt4 key购买 nike

如果我有:

const selector = (state: {}, count = 1) => {};
type parms = Parameters<typeof selector>;
然后 parms将会:
[{}, number?]
我注意到如果我应用索引,我可以提取一个参数:
type parms = Parameters<typeof selector>[1]; // type parms = number
有什么方法可以表明我想省略返回的第一个参数吗?类似 .slice(1) 的东西?

最佳答案

对于“从元组中删除第一个元素”的特定情况,您可以使用 variadic tuple types正如 TypeScript 4.0 中所介绍的:

type Tail<T extends any[]> = T extends [infer A, ...infer R] ? R : never;
在 4.0 之前,您可以使用 generic rest parameters 来做到这一点:
type Tail<T extends any[]> = 
((...x: T) => void) extends ((h: infer A, ...t: infer R) => void) ? R : never;
无论哪种方式都可以为您提供所需的行为:
type Test = Tail<[1,2,3,4,5]>; // [2,3,4,5]
type Parms = Tail<Parameters<typeof selector>>; // [number?]
Playground link to code

关于typescript - 从推断参数元组中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55344670/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com