TypeScript — тип функции с переменным числом параметров

#typescript

#typescript

Вопрос:

Я хотел бы создать тип с именем OnClick, который принимает переменное количество типов в качестве аргументов. Как бы я собирался заставить это работать? Я хочу иметь возможность использовать параметры разных типов.

 type OnClick<..> = (..) => void;

// usage:
const onClick: OnClick<string, number> = (key, value) => {...}
const onClick2: OnClick<SomeType, AnotherType> = (someThing, anotherThing) => {...}
  

Комментарии:

1. typescriptlang.org/docs/handbook/functions.html#overloads

Ответ №1:

Вы можете использовать ограничение to T , чтобы объявить его как кортеж, а затем использовать его для ввода args :

 type OnClick<T extends any[]> = (...args: T) => void;

// usage:
const onClick: OnClick<[string, number]> = (key, value) => {}
  

Комментарии:

1. Есть ли какой-либо способ сделать это без необходимости указывать типы в массиве?

2. Я думаю, что нет. Даже предлагаемое решение является обходным.

3. Что бы вы предпочли вместо кортежа?