У меня есть это определение типа
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}
}
function myFunc<T>(value: T) : T { return value; }
- person Aleksey L.   schedule 31.10.2019