У меня есть модуль с несколькими экспортированными функциями. Объявление моего модуля выглядит так:
declare module 'my-module' {
export function getUserAvailablePaymentMethods(requestData: {
merchantId: number,
}): Promise<any>
// etc...
}
Это прекрасно работает. Хотя я бы также хотел экспортировать интерфейс из этого модуля с теми же функциями. Нравится:
declare module 'my-module' {
export interface InjectedActions {
getUserAvailablePaymentMethods: (requestData: {
merchantId: number,
}) => Promise<any>
}
export function getUserAvailablePaymentMethods(requestData: {
merchantId: number,
}): Promise<any>
// etc...
}
Причина этого в том, что я иногда хочу ввести свои реагирующие компоненты, и тогда мне нужен интерфейс.
Эта проблема
Я не хочу писать все функции дважды, как в моем примере. Я пробовал это делать:
declare module 'my-module' {
export function getUserAvailablePaymentMethods(requestData: {
merchantId: number,
}): Promise<any>
export interface InjectedDevcodeActions {
getUserAvailablePaymentMethods: getUserAvailablePaymentMethods
}
// etc...
}
Но это не работает. Я получаю: «Не могу найти имя getUserAvailablePaymentMethods».
Можно ли этого добиться, не записывая функции дважды?





Значение getUserAvailablePaymentMethods нельзя использовать напрямую как тип. Используйте typeof, если вам нужен его тип:
declare module 'my-module' {
export function getUserAvailablePaymentMethods(requestData: {
merchantId: number,
}): Promise<any>
export interface InjectedDevcodeActions {
getUserAvailablePaymentMethods: typeof getUserAvailablePaymentMethods
}
// etc...
}
Эта проблема - лучшее сообщение об ошибке.