Как уже упоминалось другими, это не очень хорошая идея, потому что вы нарушаете замену Лискова.
То, что вы можете легко сделать, это обеспечить переопределение, которое принимает как string
, так и number
.Это позволяет вашему классу все еще использоваться везде, где ожидается базовый класс.
class Base {
public myMethod(myString: string): undefined {
return;
}
}
class Child extends Base {
public myMethod(myNumberOrString: number | string): undefined {
if (typeof myNumberOrString === 'number') {
return super.myMethod(String(myNumberOrString));
} else {
return super.myMethod(myNumberOrString);
}
}
}