(a: ?) => (b: ?) => {};
Чтобы a и b имели опциональный интерфейс Bar {asd: number; dsa: string}, но вместе гарантировали что все обязательные свойства этого интерфейса попадут в тело последней функции.
Например
foo({asd:1})({dsa:'123'}); // ok
foo({asd:1})(); // error dsa is required
foo()({asd:1}); // error dsa is required
Не понял как это должно работать. Какие-то свойства из Bar должны обязательно попасть во вторую функцию или аргументы во второй функции должны быть идентичны аргументам первой?
Держи: https://github.com/realainov/type-challenges/blob/master/extreme/462%20-%20Currying%202.ts
Чуть попозже могу написать как, с телефона не удобно)
вот мой суровый вариант без хаков и непредсказуемости
Обсуждают сегодня