lightalex
@lightalex

Как переопределить метод родительского класса в TypeScript?

Есть код:
class A {
	m(a: number) { }
}

class B extends A {
	m(a: number, b: string) { }
}


Редактор кода ругается, что нельзя переопределять метод m с другими аргументами:
5f96d6df0fc32680042283.png

Подскажите пожалуйста, можно ли все-таки как-то переопределить метод с другим списком аргументов?
  • Вопрос задан
  • 2000 просмотров
Пригласить эксперта
Ответы на вопрос 1
profesor08
@profesor08
В Javascript нет такой вещи, как перегрузка функций, методов и тд. Поэтому, для достижения аналогичного функционала, хоть и с ограничениями, используются необязательные аргументы с разными типами и дальнейшая проверка этих типов. Typescript позволит добить некоторой строгости в вызовах, но проверять наличие аргументов и их типов придется ручками. Как это делается описано по ссылке: https://www.typescriptlang.org/docs/handbook/funct...

Получиться должно что-то вроде. Но думаю уже должна была отпасть охота этим заниматься.
class A {
  m(a: number): any {
    return a;
  }
}

class B extends A {
  public m(a: number, b?: number): number;
  public m(a: any, b: any): number {
    if (b === undefined) {
      return super.m(a);
    }
    else {
      return a + b;
    }
  }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы