typescript - 打字稿重新映射数组类型
问题描述
是否可以重新映射数组类型(或者可能是元组?)
假设我有一个函数数组,并且我想用它捕获参数的函数数组。就像是。
type Remap<F extends ((... args: any) => any)[]> =
F extends [infer T1] ? [Parameters<T1>] :
F extends [infer T1, infer T2] ? [Parameters<T1>, Parameters<T2>] :
F extends [infer T1, infer T2, infer T3] ? [Parameters<T1>, Parameters<T2>, Parameters<T3>] :
never;
const a = [(a: string) => void, (b: number) => void]
type T = Remap<typeof a> // [[string], [number]] - simply captured arguments of functions.
我需要传递诸如“a”之类的函数数组并创建可能包含来自所有函数的参数的新函数,例如([第一个参数],[第二个参数])。
解决方案
您可以使用映射类型来映射元组:
type Remap<F extends ((...args: any) => any)[]> = {
[P in keyof F]: F[P] extends (...a: infer P) => any ? P: never
}
declare const a: [(a: string) => void, (b: number) => void]
type T = Remap<typeof a>
推荐阅读
- r - 使用 tapply 函数生成平均值时出错
- python - Django WSGI APACHE ModuleNotFoundError:没有名为“django”的模块
- python - urllib.request.urlretrieve 在仅从站点检索一张图片时卡住了
- c# - 查询表的Linq扩展方法
- angular - 删除行后无法刷新 p-table 中的数据 ( PrimeNg )
- logstash - Filebeat 只收获一些 csv 文件
- python - 根据条件从其他数据框中添加列
- javascript - 如何防止 TypeError 空白未定义?
- go - 未找到 Go Web 服务器 404 页面
- django - Django AttributeError:'str'对象没有属性'get'