У меня есть определение этого типа
type FuncType<T> = (value: T) => T
Я хочу реализовать функцию с использованием этого типа, которая будет выглядеть следующим образом:
const myFunc: FuncType<T> = (value) => value;
и использовать ее следующим образом:
const a: string = myFunc<string>('a');
const b: number = myFunc<number>(2);
Но, конечно, предыдущая строка const myFunc: FuncType<T> = (value) => value;
не имеет допустимого синтаксиса.
Как это должно быть написано?
Примечание : я нашел обходной путь с использованием промежуточной функции, но было бы неплохо избежать этого бесполезного карри (который я не могу использовать в любом случае в моем реальном случае использования, потому что это связано с реагирующим хуком и реагирующим хукомне терпит карри) :
const myFunc = <T>(): FuncType<T> => (value) => value;
const a: string = myFunc<string>()('a');
const b: number = myFunc<number>()(2);
Почему я должен использовать псевдоним этого типа и не могу напрямую писать?
const myFunc = <T>(value: T): T => value;
Потому что в моем реальном случае использования определение типа моей функции не так просто.
Это выглядит примерно так:
interface FuncType<T> {
(args: {arg1: T}): {res1: T}
(args: {arg1: T, arg2: T}): {res1: T, res2: T}
}