diff --git a/src/types/records.ts b/src/types/records.ts index 2f264d9..63b348e 100644 --- a/src/types/records.ts +++ b/src/types/records.ts @@ -7,7 +7,15 @@ export type NeverRecord = Record; export type StringRecord = Record; -export type EnumRecord = Record; +/** + * This is an alternative to a TypeScript enum. + * + * It is useful for when you do not want reverse mapping of enum values to keys, + */ +export type EnumRecord = Record< + Key, + Value +>; export type RemoveIndex = { [Key in keyof Type as symbol extends Key diff --git a/src/types/strings.ts b/src/types/strings.ts index 0c2d44b..2c7cd9c 100644 --- a/src/types/strings.ts +++ b/src/types/strings.ts @@ -1,5 +1,8 @@ import type { Digit } from './numbers.js'; +// eslint-disable-next-line @typescript-eslint/ban-types +export type AutoCompletableString = string & {}; + export type EmptyString = ''; export type Space = ' '; @@ -90,9 +93,9 @@ export type CamelCase< Delimiter extends string = Space, > = Type extends `${infer Left}${Delimiter}${infer Right}` ? `${Left}${CamelCase, Delimiter>}` : Type; -export type PascalCase = Capitalize< - CamelCase>>, Delimiter> ->; +export type PascalCase = string extends Type + ? Capitalize + : Capitalize>>, Delimiter>>; export type StringLength = string extends Type ? never