Функции высшего порядка в TypeScript? - PullRequest
1 голос
/ 31 января 2020

Пожалуйста, рассмотрите следующий псевдокод, пытающийся определить функцию типа более высокого порядка с типизированным параметром функции M<?>:

type HigherOrderTypeFn<T, M<?>> = T extends (...)
  ? M<T>
  : never;

M<?> является синтаксически неправильным TypeScript, но объявляет тип подпись HigherOrderTypeFn<T, M> выдает ошибку Type 'M' is not generic. ts(2315) во второй строке.

Правильно ли я считаю, что такой тип в настоящее время не представлен в TS?

1 Ответ

1 голос
/ 31 января 2020

Вы правы, в настоящее время он не представлен в TypeScript. Существует давний открытый запрос функции GitHub, microsoft / TypeScript # 1213 , который, вероятно, должен называться что-то вроде «поддержка типов с более высоким родом», но в настоящее время имеет заголовок «Разрешить параметризации классов c в других параметрах». c классы ".

В обсуждении есть некоторые идеи о том, как смоделировать такие типы с более высоким родством в текущем языке (конкретный пример см. в этом комментарии ), но, по моему мнению, они, вероятно, этого не делают. принадлежат в производственном коде. Если у вас есть какая-то конкретная структура c, которую вы хотите реализовать, может быть предложено что-то подходящее.

Но в любом случае, если вы хотите увеличить вероятность (возможно, пренебрежимо мало, к сожалению) того, что это когда-либо случится, вы можете go решить эту проблему и дать ей ? и / или описать свое использование случай, если вы думаете, что это особенно убедительно по сравнению с тем, что уже есть. Хорошо, надеюсь, это поможет; удачи!

...