从 TypeScript 4.0 开始,我们命名为 tuples,这很棒:
type Fn = (foo: number) => void;
type Foo = Parameters<Fn>;
// type Foo = [foo: number];
Run Code Online (Sandbox Code Playgroud)
然而,我面临着一种情况,我现在有一个命名元组,但名称很混乱。我不想要这些名字。
如何构建一个RemoveNames<T>可以接受[foo: number]并返回的实用程序类型[number]?
注意:当然,我需要它来处理任何大小的元组。
这些元组名称往往非常粘,但如果您在元组中添加/附加未命名的元素,它们就会消失。因此,一种方法可以是预先添加然后删除某些类型,如下所示:
type RemoveNames<T extends any[]> = [any, ...T] extends [any, ...infer U] ? U : never
Run Code Online (Sandbox Code Playgroud)
这似乎按照你想要的方式行事:
type UnnamedFoo = RemoveNames<Foo>;
// type UnnamedFoo = [number]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
568 次 |
| 最近记录: |