У меня есть функция, которая выглядит так:
getShopItems: async (parent, { payload }, ctx: Context, info) => { ... }
Есть ли способ привести свойство payload второго аргумента? Я бы хотел сделать что-то подобное, например:
getShopItems: async (parent, { payload: ItemSearchPayload }, ctx: Context, info) => { ... }
Я знаю, что могу решить эту проблему, присвоив объекту имя и приведя его к чему-нибудь, а-ля:
interface Args {
payload: ItemSearchPayload;
}
getShopItems: async (parent, args: Args, ctx: Context, info) => { ... }
и в этом случае я бы набрал, как и ожидалось, но я надеюсь, что есть ярлык, потому что у меня много таких функций, и я бы предпочел не создавать кучу интерфейсов, чтобы использовать их в одном экземпляре, например это.






Вы можете ввести разрушенный параметр в строку:
getShopItems: async (
parent,
{ payload }: { payload: ItemSearchPayload },
ctx: Context, info
) => {
// ...
}
Другой вариант - добавить универсальный type Action<TPayload> = { payload: TPayload } и затем использовать его как args: Action<ItemSearchPayload>
Идеально! Именно то, что я искал.