Как интерпретируется JavaScript / TypeScript (примечание: код TypeScript переносится в JavaScript, который затем интерпретируется), когда вы используете цепочку, typScript знает о типе, с которым он имеет дело (то есть массив чисел), так как он стоит первым,Однако с потоком тип, над которым будут работать функции потока, указывается последним, поэтому он не знает, какие типы он будет использовать, поэтому необходимы универсальные средства или другой способ указания типов, которые будут использоваться.Кроме того, linter, генерирующий эту ошибку, интерпретирует код, поэтому он не знает, с какими типами обращаются, когда ввод вводится последним при использовании «потока».
Поскольку вы используете lodash с TypeScript, функции, которые вы используетеиспользуют вспомогательные обобщения для указания типов, с которыми они имеют дело.
Следовательно, вы можете указать, что вводится / выводится из функций lodash, следующим образом:
flow(
map<number, [number, number]>(x => [x, x * 2]),
flatten,
sortBy(x => x)
)([1, 2, 3]);
или, как предлагает Дарека:
flow(
map((x: number) => [x, x * 2]),
flatten,
sortBy(x => x)
)([1, 2, 3])
Но, опять же, это работает только потому, что мы указываем компилятору, какой тип будет использоваться.
Пример работы этих фрагментов кода можно найти здесь .
Обратите внимание, что входы / выходы функции были явно определены, например, «карта» указывает, что тип, который она будет перебирать, - это число, а результат операции - этокортеж.