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

В приведенном ниже примере, например, myFoo будет принимать аргумент типа Boolean.

function myFoo(value:Boolean) { }

Мои вопросы: возможно ли изменить функцию myFoo для приема нескольких types используя прототип?

например, function myFoo(value:Boolean | string) { }

Примечание: myFoo - это глобальная функция, которую нельзя редактировать напрямую.

Обновлено

Глобальная функция, которая находится в другом файле,

export declare class MyGlobalClass<T> extends Observable<T> implements Observer<any> {
    myFunc(value: Boolean): void;
} 

В моем файле TS,

this.myGlobalClass.myFunc('string');

Но выдает ошибку типа. поскольку myFunc принимает только Boolean. Мне нужно это исправить.

Ответы [ 2 ]

1 голос
/ 11 октября 2019
function myFoo(value: Boolean|string) {
    if (typeof value === 'string') {
        //do string patch
    } else {
        //whatever
    }
}
0 голосов
/ 11 октября 2019

измените тип на «любой»

function myFoo(value:any) { }

Обратите внимание, что вы потеряете все проверки типов, которые предлагает Typescript для этого, поскольку вы в основном говорите Typescript, что хотите разрешить свой параметр «value»буквально быть любым типом.

...