Функция перегрузки отличается количеством и типом параметров в Typescript, используя типы Union

Я пытаюсь перегрузить функцию, которая имеет две перегрузки, как показано ниже

getData(): MyModel
getData<T>(type:string):T

Теперь, основываясь на деталях, найденных в блоге, я пытаюсь использовать union types чтобы обеспечить типы параметров, которые могут принимать вышеуказанные функции.

Случай 1: (здесь нет проблем)

Когда функции имеют параметры, и они отличаются только типами, как показано ниже

getData(type:number): MyModel
getData<T>(type:string):T
getData<T>(type: number|string): MyModel:T {
 //implementation
}

Случай 2: (Проблема: Как использовать тип Union в этом случае)

Когда параметры функций различаются по количеству и типам, как показано ниже

getData(): MyModel
getData<T>(type:string):T

Вопросы

  1. Как пользоваться Union types в Case 2
  2. Если Union types не может быть использовано, чем, как перегрузить эти функции (используя Typescript)

1 ответ

Решение

Вам нужно установить параметр как необязательный и использовать тип объединения для типа возвращаемого значения:

class MyClass {
    getData(): MyModel;
    getData<T>(type: string): T;
    getData<T>(type?: string): MyModel | T {
        // implementation
    }
}

( код на детской площадке)

Другие вопросы по тегам