typescript - 从推断参数元组中删除项目
问题描述
如果我有:
const selector = (state: {}, count = 1) => {};
type parms = Parameters<typeof selector>;
那么parms
将是:
[{}, number?]
我注意到如果我应用一个索引,我可以提取一个参数:
type parms = Parameters<typeof selector>[1]; // type parms = number
有什么方法可以表明我想省略返回的第一个参数?类似的东西.slice(1)
?
解决方案
对于“从元组中删除第一个元素”的特定情况,您可以使用 TypeScript 4.0 中引入的可变元组类型:
type Tail<T extends any[]> = T extends [infer A, ...infer R] ? R : never;
在 4.0 之前,您可以使用通用休息参数来做到这一点:
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?]
推荐阅读
- java - 输出连接字符串的列表
- c - 在 C 中,为什么 Double 类型不能像它应该的那样给你 2^64?
- php - 使用 PHP 计算 MySQL 中分层(树)数据结构中节点的所有子节点
- amazon-web-services - 将标签添加到 aws dynamo db
- apache-spark - 运行火花提交时出现内存不足错误
- oracle-apex - 我如何将 pdf 文件显示到区域 oracle apex 中?
- ios - SwiftUI 在 ScrollView 中创建自定义分段控件
- sql - 嗨,我正在尝试创建 SQl 表,但我一直收到此错误 ORA-00907:缺少右括号 00907。00000 -“缺少右括号”
- powershell - PowerShell:将 Compress-Archive 与 Start-Job 一起使用将不起作用
- python - 具有不连续单调函数的二等分:使用二等分求根以获得允许跳跃的弱单调函数