如果我有:
const selector = (state: {}, count = 1) => {};
type parms = Parameters<typeof selector>;
Run Code Online (Sandbox Code Playgroud)
然后parms
将是:
[{}, number?]
Run Code Online (Sandbox Code Playgroud)
我注意到如果我应用索引,我可以提取一个参数:
type parms = Parameters<typeof selector>[1]; // type parms = number
Run Code Online (Sandbox Code Playgroud)
有什么方法可以表明我想省略返回的第一个参数吗?类似的东西.slice(1)
?
jca*_*alz 10
对于“从元组中删除第一个元素”的特定情况,您可以使用 TypeScript 4.0 中引入的可变参数元组类型:
type Tail<T extends any[]> = T extends [infer A, ...infer R] ? R : never;
Run Code Online (Sandbox Code Playgroud)
在 4.0 之前,您可以使用通用休息参数来做到这一点:
type Tail<T extends any[]> =
((...x: T) => void) extends ((h: infer A, ...t: infer R) => void) ? R : never;
Run Code Online (Sandbox Code Playgroud)
无论哪种方式都可以为您提供所需的行为:
type Test = Tail<[1,2,3,4,5]>; // [2,3,4,5]
type Parms = Tail<Parameters<typeof selector>>; // [number?]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
494 次 |
最近记录: |