1.1.0 • Published 3 years ago
go-constant v1.1.0
Go Constant
Store values that should remain unchanged in constant properties with ease. Similar to using the const declaration, it creates a read-only reference to a value (configurable: false, writable: false, enumerable: true), however it does not make the stored value immutable. While the constant properties are protected from reassignment and reconfiguration, new properties can still be added. If you want to finalise an object and prevent extension, use Object.freeze().
- version: 1.1.0
- license: GNU LGPLv3
Installation
npm i go-constantor
yarn add go-constantImporting
ES6
import Constant from "go-constant";Node
const Constant = require("go-constant");Browser
<script src="dist/go-constant.min.js"></script>Usage
Simple
const RED = Constant("#FF0000", "Red");
console.log(RED.value); // => "#FF0000"
console.log(RED.valueOf()); // => "#FF0000"
console.log(RED.name); // => "Red"Enum-like
const options = { valueOf: "dayOfWeek", saveInstances: true };
const Day = Constant.newType("Day", ["dayOfWeek", "name", "shortName"], options);
Object.assign(Day, {
MONDAY : Day(1, "Monday", "Mon"),
TUESDAY : Day(2, "Tuesday", "Tue"),
WEDNESDAY : Day(3, "Wednesday", "Wed"),
THURSDAY : Day(4, "Thursday", "Thu"),
FRIDAY : Day(5, "Friday", "Fri"),
SATURDAY : Day(6, "Saturday", "Sat"),
SUNDARY : Day(7, "Sunday", "Sun")
});
console.log(Day.MONDAY.dayOfWeek); // => 1
console.log(Day.MONDAY.valueOf()); // => 1
console.log(Day.MONDAY.name); // => "Monday"
console.log(Day.MONDAY.shortName); // => "Mon"
console.log(Day.instances.length); // => 7Documentation
Table of Contents
Constant
Creates a wrapper object which has constant value and name properties.
Parameters
valueany The value of the constant.namestring The name of the constant.
Examples
const RED = Constant("#FF0000", "Red");
console.log(RED.value); // => "#FF0000"
console.log(RED.valueOf()); // => "#FF0000"
console.log(RED.name); // => "Red"Meta
- since: 1.0.0
newType
Creates a new constant type constructor.
Parameters
namestring The name of the constructor.propNamesArray[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) The names of the constructor parameters which will be constant properties.optionsObject? Constructor options.options.validatefunction? The constructor parameter validator.options.valueOf(function | string)? The name of the property to return as the value of the instance or the function to use to return the value of the instance.options.saveInstancesboolean? Whether to save instances or not. The instances are saved in an array, {ConstantType}.instances.
Examples
const Day = Constant.newType("Day", ["dayOfWeek", "name", "shortName"], {
valueOf: "dayOfWeek",
saveInstances: true
});
const MONDAY = Day(1, "Monday", "Mon");
console.log(MONDAY.dayOfWeek); // => 1
console.log(MONDAY.valueOf()); // => 1
console.log(MONDAY.name); // => "Monday"
console.log(MONDAY.shortName); // => "Mon"
console.log(Day.instances); // [ Day { dayOfWeek: 1, name: "Monday", shortName: "Mon" } ]Returns function The new constant type constructor.
Meta
- since: 1.1.0