Skip to content

Iceman8911/better-ts-enum

Repository files navigation

better-ts-enum

A scalable, type-safe, and ergonomic TypeScript enum replacement library.


Overview

This project provides a set of composable, zero-runtime-surprise enum utilities for TypeScript. It is designed for minimal bundle size, strong type inference, and extensibility as new enum types are added.


Installation

Install with your favorite package manager:

bun

bun add better-ts-enum

npm

npm install better-ts-enum

pnpm

pnpm add better-ts-enum

yarn

yarn add better-ts-enum

Enum Types

This package provides multiple enum implementations, each optimized for different use cases:

A feature-rich enum with auto-increment, computed members, prefix/suffix generation, and nominal typing. Choose this when you need configurability and advanced features.

Quick example:

import { BasicEnum, BasicEnumBuilder } from "better-ts-enum/basic-enum";

const Status = BasicEnum.new({ ACTIVE: "active", INACTIVE: "inactive" });
// or
const Priority = BasicEnumBuilder.new({ valueType: "key" })
	.$("LOW")
	.$("MEDIUM")
	.$("HIGH")
	.build();

See BasicEnum documentation for full API, config options, and examples.

A lightweight alternative with a minimal API surface. Choose this when you want simplicity and a smaller bundle footprint.

Quick example:

import { MinimalEnum, MinimalEnumBuilder } from "better-ts-enum/minimal-enum";

const Status = MinimalEnum.new({ ACTIVE: "active", INACTIVE: "inactive" });
// or
const Priority = MinimalEnumBuilder.new()
	.$("LOW")
	.$("MEDIUM")
	.$("HIGH")
	.build();

See MinimalEnum documentation for full API and examples.


Features

All enum types include:

  • Strong type inference – Keys and values are precisely typed
  • Immutability – Enums are frozen by default (opt-out available)
  • Nominal typing – Optional distinct types per enum for type safety
  • JSON serialization – Enums stringify as plain objects
  • Auto-increment – Like native enums, when desired

Contributing

Please see CONTRIBUTING.md for contribution guidelines.


License

MIT


About

Yet another typescript enum replacement. Designed for minimal bundle size, maximum type-safety, and ergonomics.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors