给定方法签名的元组,是否可以推断出一个新的元组类型,其值是原始元组方法的返回值?

时间:2019-05-25 22:22:31

标签: typescript types tuples

在TypeScript中,我具有以下元组类型:

type MyTuple = [(value: string) => string, (value: string) => number];

如何从上述推断出以下新类型?

// [string, number]

我知道TypeScript的ReturnType类型,但是我不知道如何在数组/元组中使用它,或者甚至不可能。

如果有帮助,我需要将其与泛型结合使用。

1 个答案:

答案 0 :(得分:1)

是的,您可以这样做! TypeScript 3.1引入了对mapped tuples的支持。从该版本开始,当您在数组或元组上使用mapped type时,会得到一个作用于元素类型的新数组或元组。所以,你去:

type MyTuple = [(value: string) => string, (value: string) => number];

type MapReturnType<T> = {
  [K in keyof T]: T[K] extends (...args: any) => infer R ? R : never
};

type ReturnTuple = MapReturnType<MyTuple>;
// type ReturnTuple = [string, number]

Link to code

看起来不错。好的,希望对您有所帮助。祝你好运!