问题描述
Since TypeScript 4.0,we have named tuples,很棒:
type Fn = (foo: number) => void;
type Foo = Parameters<Fn>;
// type Foo = [foo: number];
但是,我现在面临的情况是我现在有一个已命名的元组,但名称却很混乱。我不要名字。
如何构建一个RemoveNames<T>
并返回[foo: number]
的{{1}}实用程序类型?
注意:当然,我需要它来处理任何大小的元组。
解决方法
这些元组的名称通常很粘,但是如果您在元组前面添加/未命名元素,它们确实会消失。因此,执行此操作的一种方法可能是添加前缀,然后删除某些类型,例如:
type RemoveNames<T extends any[]> = [any,...T] extends [any,...infer U] ? U : never
这似乎按照您想要的方式发挥作用:
type UnnamedFoo = RemoveNames<Foo>;
// type UnnamedFoo = [number]
希望有所帮助;祝你好运!