Group of useful functions that allow to create and manage Immutable and sealed properties and objects.
⚠️ Experimental Project (Please do not use in production)
- Node.js v12 or higher
This package is available in the Node Package Repository and can be easily installed with npm or yarn.
$ npm i @slimio/immutable
# or
$ yarn add @slimio/immutable
const { freezedProperty, seal } = require("@slimio/immutable");
class User {
constructor(name, age) {
// Produce readyonly properties
freezedProperty(this, "name", name);
freezedProperty(this, "age", age);
}
}
User.properties = seal({
name: "param as a string"
});
Object.preventExtensions(User);
const obj = new User("fraxken", 16);
console.log(obj.name);
console.log(obj.age);
seal< T extends object >(target: T): T
Same as Object.seal() but doesn't allow to cast the original property type:
const obj = Immutable.seal({
foo: "bar"
});
obj.foo = "world"; // ok
obj.foo = 10; // Error: Unable to cast string to number for propertyKey foo
freezedProperty(target: object, propertyKey: symbol | string, value?: any): void
Setup a freezed property on a given target (Same behavior as Object.freeze but for all kind of values).
const obj = {};
Immutable.freezedProperty(obj, "foo", "bar");
console.log(obj.foo); // stdout bar
delete obj.foo; // Error
Name | Refactoring | Security Risk | Usage |
---|---|---|---|
@slimio/is | Minor | Low | Type checker |
MIT