【问题标题】:How to convert a named tuple to a unnamed tuple in TypeScript 4.0?如何在 TypeScript 4.0 中将命名元组转换为未命名元组?
【发布时间】:2020-08-25 01:53:10
【问题描述】:

Since TypeScript 4.0, we have named tuples,太好了:

type Fn = (foo: number) => void;

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

但是,我现在面临的情况是,我现在有一个命名元组,但名称只是杂乱无章。我不想要这些名字。

如何构建一个RemoveNames&lt;T&gt; 实用程序类型,该类型将采用[foo: number] 并返回[number]

注意:当然,我需要它来处理任何大小的元组。

【问题讨论】:

    标签: typescript tuples


    【解决方案1】:

    这些元组名称往往很粘,但如果您在元组前面添加/附加一个未命名的元素,它们确实会消失。因此,一种方法可能是预先添加然后删除某种类型,如下所示:

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

    这似乎是你想要的方式:

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

    Playground link to code

    【讨论】:

      猜你喜欢
      • 2023-03-29
      • 2014-09-19
      • 2014-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-07
      相关资源
      最近更新 更多