Typescript, Generics, Polymorphism.
name: "JOHN", city: "NEW YORK", country: "USA" } Here StringObject ensures that all keys and values of an object are of string type. UppercaseObject accepts an object type, maps through its properties, and asserts that the value for any corresponding property is of type string. <T extends