Я пытаюсь установить интерфейс TypeScript для своего проекта, но я не могу установить определенное свойство как метод ... только как свойство, указывающее на функцию ...
Я могу исправить свойпроблема, но я получаю дополнительный набор скобок ...
Корень проблемы в том, что я хочу использовать пользовательский тип type DateRange<R> = (startTime: string) => (endTime: string) => R;
, и внутри него уже встроена первая функция .. .
Внутри определения интерфейса у меня есть разные методы, многие из которых выглядят так:
/* (0) with the parenthesis it is a method and because I have
a first function I can call it and then use my custom
type DateRange<R> */
orders(stateFilter?: string | undefined): DateRange<Promise<IOrder[]>>;
, но у меня также есть другие, которые выглядят так:
/* (1) with the parenthesis it is a method */
activities(): DateRange<Promise<IAccountActivity[]>>;
Возможны следующие решения:
/* (2) Without the parenthesis, it is not a method anymore but
a property that can be called like a function */
activities: DateRange<Promise<IAccountActivity[]>>;
или также ...
/* (3) This is the best solution but I would prefer be able
to use my custom type DateRange<R> */
activities(startDate: string): (endDate: string)=> Promise<IAccountActivity[]>
Код интерфейса в контексте находится на моем GitHub
Есть ли у вас какие-либо предложения, чтобы я мог использовать пользовательский тип, не используя дополнительный набор фигурных скобок и не используя IntelliSense или системы автозавершения кода, помещающие значок свойства вместо значка метода? Или у меня нет выбора, кроме как отказаться от пользовательского типа, если я не хочу получить дополнительные скобки ... Я не знаю, может ли хитрый трюк привести меня туда, куда я хочу ...