如何在TypeScript 4.0中将命名元组转换为未命名元组?

3
自 TypeScript 4.0 开始,我们拥有了命名元组,这是很棒的:
type Fn = (foo: number) => void;

type Foo = Parameters<Fn>;
// type Foo = [foo: number];

然而,我现在面临的情况是,我有一个命名元组,但这些名称只是杂乱无章的。我不想要这些名称。
如何构建一个 RemoveNames<T> 实用类型,它将接受 [foo: number] 并返回 [number]
注意:当然,我需要它能够处理任意大小的元组。
1个回答

5

这些元组名称往往比较固定,但是如果在元组中前置/后置非命名元素,则它们会消失。因此,一种方法是前置并删除一些类型,例如:

type RemoveNames<T extends any[]> = [any, ...T] extends [any, ...infer U] ? U : never

看起来这似乎是您想要的方式:

type UnnamedFoo = RemoveNames<Foo>;
// type UnnamedFoo = [number]

代码演示链接


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接