С тех пор, как TS 2.8, мы можем сделать следующее:
type ArgType<F> = F extends (a: infer A) => any ? A : any
const fn: (s: string) => 500
ArgType<(typeof fn> // => string
Давайте предположим следующую ситуацию.
type FunctionCollection = {
[key: string]: (s: ???) => any
}
const fnCol: FunctionCollection = {
someFn: (s: string) => 500
}
Вопрос: Есть ли способ заменить ???
(или всю функцию FunctionCollection) на такой тип, что
ArgType<(typeof fnCol)["someFn"]> 'equals' string
(Проблема в том, что, например, если ??? = any
, мы получим any
)