Я пытаюсь перегрузить метод с помощью 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?
Вы должны использовать вторую форму. JavaScript не имеет проверки типов на аргументы функции или даже количество аргументов. Только одна версия функции может существовать с заданным именем. Поэтому, когда TypeScript компилируется в JavaScript, он может создавать только одну функцию для данного метода.
Видеть