A "Strict Object" behaves just like a JavaScript object, but throws errors when you try to access not-defined properties.
Table of Contents
npm install strict-objimport strictObject from 'strict-obj';
const data = strictObject({ one: "ONE", two: 2 });
// Access properties normally:
console.log(data.one, data.two) // "ONE 2"
// Errors are thrown for not-defined properties:
console.log(data.three) // Error: `three` is not defined
// Properties can be set normally:
data.three = "THREE";
console.log(data.three); // "THREE"strictObject<T>(data: DeepPartial<T>, name?: string, config?: StrictObjectConfig): T
data- the data that will be wrapped. Nested objects will be automatically wrapped too. This can be any object, array, or function.name- (default:"strictObject") improves the error message, eg.ReferenceError: strictObject.prop is not definedconfigignore: Array<string | symbol>(default[]) - an array of keys/symbols to ignore (they will return the raw value, orundefined)shallow(defaultfalse) - ignores nested objectsthrowOnSet(defaultfalse) - Normally, you can set any value on a Strict Object, even if not defined. Setting this totruewill ensure you can only set properties that are already defined, and an error will be thrown otherwise.
When using a StrictObject with certain Jest features (like expect or Snapshots), Jest checks the objects for certain fields (like asymmetricMatch, $$typeof, toJSON, etc).
You can automatically ignore these fields by importing from strict-object/jest like so:
import strictObject from 'strict-object/jest';
it('should ignore jest-specific fields', () => {
const data = strictObject({ one: 1 });
expect(data).toMatchInlineSnapshot(`
Object {
"one": 1,
}
`);
});