Я ищу способ сгруппировать набор частично применяемых функций, при этом будет отличаться только первый параметр (ы). Или другими словами; Группа содержит функции, принимающие любое количество параметров любого типа, но первое приложение всегда должно возвращать функцию типа (state: State) => Event[]
.
Например, группа таких функций:
const group = {
func1: () => (state: State) => Event[],
func2: (arg: string) => (state: State) => Event[],
func3: (arg: string, arg2: number) => (state: State) => Event[],
}
Все эти функции следуют шаблону (не обновлены для приема нескольких аргументов):
export type Command = <T>(arg: T) => (state: State) => Partial<Event>[];
Однако, когда я пытаюсь ввести группу так:
const command: Record<string, Command> = {
func1: () => (state: State) => [{}],
func2: (arg: string) => (state: State) => [{}],
func3: (arg: string, arg2: number) => (state: State) => [{}],
};
Typescript предупреждает меня, что тип T не может быть назначен строке типа.
Type '(arg: string) => (state: State) => {}[]' is not assignable to type 'Command'.
Types of parameters 'arg' and 'arg' are incompatible.
Type 'T' is not assignable to type 'string'
Я понимаю, почему это не может быть назначено, но я не могу понять, как бы я тогда набрал эту группу частично применяемых функций. Я в основном хочу убедиться, что каждая функция в этой группировке следует шаблону типа Command. То есть это должна быть частично применяемая функция с любыми параметрами любого типа, которые возвращают функцию типа: (state: State) => Event[]
Возможно ли это, и если да, то как мне это сделать?