Using the ZipCodeValidator from merged namespace:
zipValidator.isValid("12345"): true
zipValidator.isValid("1234"): false
zipValidator.isValid("abcde"): false
In TypeScript, the merged namespace would look like:
namespace Validation {
export interface StringValidator { isValid(s: string): boolean; }
export interface NumberValidator { isValid(n: number): boolean; }
export class ZipCodeValidator implements StringValidator {
isValid(s: string): boolean {
return s.length === 5 && /^\d+$/.test(s);
}
}
}