#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. Что бы вы предпочли вместо кортежа?