首页 > 解决方案 > TypeScript:需要类似于 ReturnType<...> 的东西,但对于第一个函数参数的类型

问题描述

是否可以在 TypeScript 中声明类似 ReturnType<...> 的东西,它不检索返回值的类型,而是检索第一个参数的类型?

type SingleArgFunction<A, R> = (arg: A) => R

// wrong => how to implement the following line correctly?
type FirstArgType<T extends SingleArgFunction<infer A, any>> = A 

const numberToString: SingleArgFunction<number, string> =
    (x: number) => String(x)

type R = ReturnType<typeof numberToString> // R => string

type F = FirstArgType<typeof numberToString> // F => number

标签: typescripttypescript-typings

解决方案


看起来这是你想要的:

type FirstArgumentType<T> = T extends (arg1: infer U, ...args: any[]) => any ? U : never;

推荐阅读