Есть ли способ иметь 2 функции с одинаковым именем? - PullRequest
0 голосов
/ 11 января 2020

enter image description here

Я пытаюсь добиться аналогичного эффекта, когда у меня есть 2 функции с одинаковым именем, но они принимают разное количество аргументов. Я знаю, что перегрузка невозможна в javascript и что последняя определенная функция будет вызываться каждый раз, однако я хочу знать, есть ли способ сделать это. Я знаю, что могу назвать их по-разному, проверить количество аргументов, задать параметры по умолчанию и т. Д. c. но я пытаюсь избежать всего этого.

1 Ответ

0 голосов
/ 11 января 2020

Функция drawImage, которую вы используете в качестве примера, не только с чистым javascript. Для автозаполнения, в котором написано **image**, x ... вверху и **image**, sx ... внизу, нужны определения машинописи или машинописи. Если вам нет дела до редактора, есть способ сделать это в javascript.

Пример с Javascript

Вам нужно что-то , чтобы различать две разные функции. Например, обе функции не могут иметь одинаковые типы аргументов.

Допустим, вы хотите иметь функцию, которая выполняет две вещи. Если указан string, он добавляет " - Yes" к строке. Если дано number, то оно умножается на 2.

function multiUse(arg1){
    if(typeof(arg1) == "string"){
        //Do some stuff
        return arg1 + " - Yes";
    }
    else{
        //Do other stuff
        return arg1 * 2;
    }
}

Здесь у нас есть функция, которая делает две разные вещи, вызывая одну и ту же функцию.

Пример использования Машинопись

Если вы хотите иметь правильную функцию перегрузки машинописного текста, то вот как вы это сделаете

function multiUse(string: string): string;
function multiUse(number: number): number;
function multiUse(arg1: any): any {
    if(typeof(arg1) == "string"){
        //Do some stuff
        return arg1 + " - Yes";
    }
    else{
        //Do other stuff
        return arg1 * 2;
    }
};

После этого вы должны преобразовать файл машинописного текста в javascript файл. Два способа сделать это в основном одинаковы.

...