Declare constant properties with ease
npm install go-constantStore 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().
!codecov.io Code Coverage


* version: 1.1.0
* license: GNU LGPLv3
``javascript`
npm i go-constant
or
`javascript`
yarn add go-constant
`javascript`
import Constant from "go-constant";
`javascript`
const Constant = require("go-constant");
`javascript`
`javascript
const RED = Constant("#FF0000", "Red");
console.log(RED.value); // => "#FF0000"
console.log(RED.valueOf()); // => "#FF0000"
console.log(RED.name); // => "Red"
`
`javascript
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); // => 7
`
#### Table of Contents
* Constant
* Parameters
* Examples
* newType
* Parameters
* Examples
Creates a wrapper object which has constant value and name properties.
#### Parameters
* value any The value of the constant.name
* string The name of the constant.
#### Examples
`javascript
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
Creates a new constant type constructor.
#### Parameters
* name string The name of the constructor.propNames
* Array<string> The names of the constructor parameters which will be constant properties.options
* Object? Constructor options.
* options.validate function? 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.saveInstances
* boolean? Whether to save instances or not. The instances are saved in an array, {ConstantType}.instances.
#### Examples
`javascript
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