Skip to content

Instantly share code, notes, and snippets.

@aaronbeall
Last active December 14, 2025 17:30
Show Gist options
  • Select an option

  • Save aaronbeall/50e64f1db20913335aec9b9e2a702ed0 to your computer and use it in GitHub Desktop.

Select an option

Save aaronbeall/50e64f1db20913335aec9b9e2a702ed0 to your computer and use it in GitHub Desktop.
Type-safe string transforms, complements intrinsic string conversion literal types
/**
* Convert first character of string to uppercase
*/
const capitalize = <T extends string>(s: T): Capitalize<T> =>
`${ s.charAt(0).toUpperCase() }${ s.slice(1) }` as Capitalize<T>;
/**
* Convert first character of string to lowercase
*/
const uncapitalize = <T extends string>(s: T): Uncapitalize<T> =>
`${ s.charAt(0).toLowerCase() }${ s.slice(1) }` as Uncapitalize<T>;
/**
* Convert string to uppercase
*/
const uppercase = <T extends string>(s: T): Uppercase<T> =>
s.toUpperCase() as Uppercase<T>;
/**
* Convert string to lowercase
*/
const lowercase = <T extends string>(s: T): Lowercase<T> =>
s.toLowerCase() as Lowercase<T>;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment