That's distinguishing the String class from primitive string. I don't think that would still work with another `extends String` the same shape as Hash.
For example: https://www.typescriptlang.org/play/?#code/GYVwdgxgLglg9mABO...
class Animal {
isJaguar: boolean = false;
}
class Automobile {
isJaguar: boolean = false;
}
function engineSound(car: Automobile) {
return car.isJaguar ? "vroom" : "put put";
}
console.log(engineSound(42)); // TypeScript complains
console.log(engineSound(new Animal())); // TypeScript does not complain