Я получил 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");