1.0.0 ⢠Published 4 months ago
@zerochae/ts-enum v1.0.0
š ts-enum - Java-style Enums in TypeScript
A TypeScript Enum library inspired by Java's Enum.
Provides auto-registration, type safety, and a more structured approach to Enums in TypeScript.
š Features
ā
Java-like Enum with static values()
and valueOf()
methods
ā
Auto-register Enums without manual configuration
ā
Type-safe and strict Enum handling
ā
Removes unwanted Function
properties (apply
, caller
, bind
)
š¦ Installation
You can install ts-enum
via npm or yarn:
npm install @zc/tts-enum
# or
yarn add @zc/ts-enum
š ļø Usage
1ļøā£ Basic Enum Example
// UserStatus.ts
import { Enum, createEnum } from "ts-enum";
export default createEnum(
class UserStatus extends Enum {
static readonly ACTIVE = new UserStatus("ACTIVE");
static readonly INACTIVE = new UserStatus("INACTIVE");
protected constructor(value: string) {
super(value);
}
isActive() {
return this === UserStatus.ACTIVE;
}
},
);
// another file
import UserStatus from "/my/enum/path/UserStatus"
console.log(UserStatus.values());
// ā
[UserStatus.ACTIVE, UserStatus.INACTIVE]
console.log(UserStatus.valueOf("ACTIVE") === UserStatus.ACTIVE);
// ā
true
console.log(UserStatus.ACTIVE.isActive());
// ā
true
2ļøā£ Enum with Additional Methods
// OrderStatus.ts
import { Enum, createEnum } from "ts-enum";
export default createEnum(
class OrderStatus extends Enum {
static readonly PENDING = new OrderStatus("PENDING");
static readonly COMPLETED = new OrderStatus("COMPLETED");
static readonly CANCELED = new OrderStatus("CANCELED");
protected constructor(value: string) {
super(value);
}
isFinalized() {
return this === OrderStatus.COMPLETED || this === OrderStatus.CANCELED;
}
},
);
// use another file
import OrderStatus from "/my/enum/path/OrderStatus"
console.log(OrderStatus.PENDING.isFinalized());
// ā
false
console.log(OrderStatus.COMPLETED.isFinalized());
// ā
true
šÆ API Reference
Enum
Base Class
All custom Enums should extend the Enum
base class.
Method | Description |
---|---|
Enum.values() | Returns an array of all Enum instances |
Enum.valueOf(value: string) | Returns the Enum instance corresponding to the given value |
Enum.toString() | Returns the string representation of the Enum value |
Enum.equals(other: Enum | string) | Checks if two Enum values are equal |
Enum.strictEquals(other: Enum) | Strictly compares two Enum instances |
š” Why Use ts-enum
?
Feature | TypeScript Native enum | ts-enum |
---|---|---|
Type Safety | ā ļø Weak (allows any value) | ā Strong |
String-Based Enums | ā No | ā Yes |
Methods in Enums | ā No | ā Yes |
Auto-Registration | ā No | ā Yes |
values() / valueOf() | ā No | ā Yes |
š References
This library was inspired by class-enum.
1.0.0
4 months ago