Как я могу установить метод вместо свойства (указывая на функцию), когда я определяю интерфейс TypeScript - PullRequest
0 голосов
/ 11 октября 2019

Я пытаюсь установить интерфейс 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 или системы автозавершения кода, помещающие значок свойства вместо значка метода? Или у меня нет выбора, кроме как отказаться от пользовательского типа, если я не хочу получить дополнительные скобки ... Я не знаю, может ли хитрый трюк привести меня туда, куда я хочу ...

...