вынести тип отдельно const promisify = <A, R>(fn: (arg: A, b: (err: unknown, data: R) => void) => void): (arg: A) => Promise<R> => {
return arg => new Promise((resolve, reject) => {
fn(arg, (err, data) => {
if (err) reject(err);
resolve(data);
});
})
};
Сделал тип
type promisify<A, R> = (fn: (arg: A, b: (err: unknown, data: R) => void) => void) => (arg: A) => Promise<R>;
Но как его теперь применить к функции?
вот так не работает
const promisify: promisify = fn => {
return arg => new Promise((resolve, reject) => {
fn(arg, (err, data) => {
if (err) reject(err);
resolve(data);
});
})
};
Дженерик типы потерялись
и что нужно что бы они вернулись?
Что значит «применить его к функции»? У функции есть свой тип, у переменной — свой. Ты пытаешься присвоить переменной тип, а потом присвоить этой переменной функцию. Это немного «нахера». Переменной нельзя присвоить полиморфный тип (такой, как у тебя)
вернуть их в сигнатуру или явно указать тип для fn, чтобы тайпскрипт попробовал самостоятельно выяснить тип для дженериков
Обсуждают сегодня