Лучший способ сделать перегрузку метода в Typescript? [Дубликат]

-1

Я пытаюсь перегрузить метод с помощью TypScript. Кажется, что обычный способ перегрузки в Java или С# не применяется к TypScript. Я не могу этого сделать:

public sayHello(): string {
    var partialMessage = this.fullName +  " says hello to ";
    return partialMessage + "Unknown";
}

public sayHello(name: string) {
    var partialMessage = this.fullName +  " says hello to ";
    return partialMessage + obj;
}

Я обыскал и понял, что я должен сделать это так:

public sayHello():string;
public sayHello(name: string):string;
public sayHello(person:Person):string;

public sayHello(obj?: any) {
    var partialMessage = this.fullName +  " says hello to ";

    if(typeof obj === "string") {
        return partialMessage + obj;
    } else if(obj instanceof Person) {
        return partialMessage + (<Person>obj).fullName;
    } else {
        return partialMessage + "Unknown";
    }
}

Этот метод кажется довольно неопрятным и трудным для меня, потому что я все глубже помешиваю в один метод и деля логику с помощью операторов if/else.

Есть ли лучший способ, который я могу выполнить перегрузку метода в TypScript?

  • 0
    @WiredPrairie Я знаю, как перегрузить метод в Typescript. На самом деле, я показал, как я могу сделать это в своем вопросе. Мой вопрос был, есть ли лучший способ сделать это в Typescript. Я просто не уверен, что что-то упустил, потому что способ перегрузки метода в TS кажется мне неудобным.
  • 0
    Я бы все же предположил, что это тот же ответ, и вопрос задают немного по-другому.
Теги:
overloading

1 ответ

0

Вы должны использовать вторую форму. JavaScript не имеет проверки типов на аргументы функции или даже количество аргументов. Только одна версия функции может существовать с заданным именем. Поэтому, когда TypeScript компилируется в JavaScript, он может создавать только одну функцию для данного метода.

Видеть

Ещё вопросы

Сообщество Overcoder
Наверх
Меню