Я ищу определенный вид функциональности.
Ниже у меня есть класс StringHandler
и класс StringOrNullHandler
.Оба имеют статические методы.
export class StringHandler {
static getString (s): string {
if (s === 'red') throw new Error;
return s;
}
static getStrings (s: string[]) : string[] {
return s.map(StringHandler.getString);
}
}
export class StringOrNullHandler {
static getString (s): string | null {
if (s === 'red') return null;
return s;
}
}
Я заинтересован в замене метода StringOrNullHandler.getString
и изменении способа выполнения метода StringOrNullHandler.getStrings
.
StringHandler.getStrings(['red']) // throws
StringOrNullHandler.getStrings(['red']) // return [null]
Я могу что-то сделатьнапример, когда они не используют методы static
, и я могу расширить класс.
export class _StringHandler {
getString (s): string {
if (s === 'red') throw new Error;
return s;
}
getStrings (s: string[]) : string[] {
return s.map(this.getString);
}
}
export const StringHandler = new _StringHandler();
export class _StringOrNullHandler extends _StringHandler{
getString (s): string | null {
if (s === 'red') return null;
return s;
}
}
export const StringOrNullHandler = new _StringHandler();
StringHandler.getStrings(['red']) // throws
StringOrNullHandler.getStrings(['red']) // return [null]
Но теперь у меня другая проблема: метод StringOrNullHandler.getStrings
по-прежнему считает, что возвращаемый тип может быть толькострока и не обнуляется.
Есть ли более удобный способ получить эту функциональность?