til / TypeScript string manipulation types
In version 4.1 TypeScript added a set of types which can be used for string manipulation. These types are great for remapping string types to other formats. The types are:
Uppercase<StringType>
Lowercase<StringType>
Capitalize<StringType>
Uncapitalize<StringType>
These types are intrinsic, which means that they are built-in to the compiler and we can’t create our own implementation of them.
Intrinsic types and their operations are predefined and always accessible. Their implementations are provided by the TypeScript compiler.
// Creating a uppercase type from another string type
type Greeting = "Hello, world";
type ShoutyGreeting = Uppercase<Greeting>;
// type ShoutyGreeting = "HELLO, WORLD"
// Creating a uppercase type with string interpolation
type ASCIICacheKey<Str extends string> = `ID-${Uppercase<Str>}`;
type MainID = ASCIICacheKey<"my_app">;
// type MainID = "ID-MY_APP"
// Creates a union if the property has multiple values
type Keys = "name" | "address";
type Getters = `get${Capitalize<Keys>}`;
// type Getters = "getName" | "getAddress"
// Can be used with multiple unions
type Keys = "name" | "address";
type Accessors = "get" | "set";
type Methods = `${Accessors}${Capitalize<Keys>}`;
// type Methods = "getName" | "getAddress" | "setName" | "setAddress"