Интерфейс для аргументов функции по умолчанию и расширенный интерфейс - PullRequest
0 голосов
/ 30 апреля 2020

Я получил n очень похожие функции, вот пример:

  const functionOne = (firstName: string, lastName: string) => `${lastName}, ${firstName}`;
  const functionTwo = (firstName: string, lastName: string) => `${firstName} - ${lastName}`;
  const functionThree = (firstName: string, lastName: string, age: number) =>
    `${firstName}: ${lastName}, ${age}`;

Как видите, все три из них имеют одинаковый дублированный код: firstName: string; lastName: string;

Я надеялся, что можно использовать один интерфейс для всех функций, а затем расширить, если это необходимо.

Примерно так:

  interface IArguments {
    firstName: string;
    lastName: string;
  }

  const functionOne = (IArguments) => `${lastName}, ${firstName}`;
  const functionTwo = (IArguments) => `${firstName} - ${lastName}`;
  const functionThree = ({ age: number } extends IArguments) =>
    `${firstName}: ${lastName}, ${age}`;

Что, к сожалению, не работает.

Редактировать:

Я также не хочу оборачивать аргументы в объекте.

Я хочу иметь возможность вызывать такие функции:

funtionOne("James", "Brown");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...