Как можно в общем случае связать переменные в TypeScript?

У меня есть общий интерфейс, доступный для меня как таковой:

CurriedFunction3<T1, T2, T3, R>: R

Я хотел бы создать константную привязку, которая заполняет некоторые из этих аргументов типа. Примерно так:

type CurriedSorter<T> = CurriedFunction3<(obj: T) => any, string, T[], T[]>;

Когда я пытаюсь назначить привязку const этого типа, я получаю сообщение об ошибке:

type CurriedSorter<T> = CurriedFunction3<(obj: T) => any, string, T[], T[]>;

const sortFactory: CurriedSorter = uncurryN(3, flip(compose(
  unapply(sortWith),
  uncurryN(2, ifElse(
    compose(equals('DESC'), toUpper),
    always(descend),
    always(ascend),
  )),
)));
  

Универсальный тип CurriedSorter требует 1 аргумента (ов) типа.

Привязка const sortFactory быть функцией с одним параметром универсального типа, который будет использоваться как таковой:

sortFactory<MyType>(
  prop('name'),
  'DESC',
  [{ name: 'foo' }, { name: 'bar' }]
) // returns `[{ name: 'bar' }, { name: 'foo' }]`

Как можно в общем случае связывать переменные в TypeScript? Есть ли способ сделать это с помощью TypeScript?

4 голоса | спросил knpwrs 4 Maypm18 2018, 18:48:55

1 ответ


0
Вы не можете иметь пустое ---- +: = 0 =: + ---- в типе объявления переменной, потому что ---- +: = 1 =: + ---- потенциально может вытечь изценность через собственность.Однако вы можете иметь общую сигнатуру вызова как часть типа переменной.Вот отдельный пример, так как я не знаю, что вы определили ---- +: = 2 =: + ---- , ---- +: = 3 =: + ---- и т. Д.как:
ответил Ryan Cavanaugh 4 Maypm18 2018, 19:53:29

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132