我正在寻找一种特定的功能。
下面我有一个
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
方法仍然认为返回类型只能是字符串,不能为空。