在TypeScript中,我具有以下元组类型:
type MyTuple = [(value: string) => string, (value: string) => number];
如何从上述推断出以下新类型?
// [string, number]
我知道TypeScript的ReturnType
类型,但是我不知道如何在数组/元组中使用它,或者甚至不可能。
如果有帮助,我需要将其与泛型结合使用。
答案 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]
看起来不错。好的,希望对您有所帮助。祝你好运!