что и возвращает?
я тут играюсь с примеров из доклада Климова https://www.youtube.com/watch?v=etKOc80-cw0&list=PL8sJahqnzh8JDxXLMtn3EWmZWiBATL9Xu&index=24 и пытаюсь его починить
фактически едиснственное что ТС не может раздуплить это пронести отношение входящего аргумента с исходящему
const promisify = <I, O>(fun: (a: I) => O): (a: I) => Promise<O> =>
a => Promise.resolve(fun(a));
const track = <T>(e: T): T => {
console.log(e);
return e;
}
const promisifiedTrack = promisify(track)// as <T>(a: T) => Promise<T>;
const foo = { bar: 1 }
promisifiedTrack(foo).then(x => x.bar);
если раскомментить assertion то все начнет работать так как надо
я пытаюсь сформулировать как называются такие отношения чтобы погуглить что теория типов на это говорит
https://www.typescriptlang.org/play/#src=const%20promisify%20%3D%20%3CI%2C%20O%3E(fun%3A%20(a%3A%20I)%20%3D%3E%20O)%3A%20(a%3A%20I)%20%3D%3E%20Promise%3CO%3E%20%3D%3E%0D%0A%20%20%20%20a%20%3D%3E%20Promise.resolve(fun(a))%3B%0D%0A%0D%0Aconst%20track%20%3D%20%3CT%3E(e%3A%20T)%3A%20T%20%3D%3E%20%7B%0D%0A%20%20%20%20console.log(e)%3B%0D%0A%20%20%20%20return%20e%3B%0D%0A%7D%0D%0A%0D%0Aconst%20promisifiedTrack%20%3D%20promisify(track)%2F%2F%20as%20%3CT%3E(a%3A%20T)%20%3D%3E%20Promise%3CT%3E%3B%0D%0A%0D%0Aconst%20foo%20%3D%20%7B%20bar%3A%201%20%7D%0D%0A%0D%0ApromisifiedTrack(foo).then(x%20%3D%3E%20x.bar)%3B
Um identity?
Обсуждают сегодня