Package Exports
- safe-access-check
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (safe-access-check) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
safe-access-check
⚠️ Experimental. Intended to be used by compilers and code checkers ⚠️
Installation
npm install --save-dev safe-access-checkUsage
import { safeCoerce, safePropertyAccess } from 'safe-access-check';
// 1. Usage as an expression
// -------------------------
let some = moo + '10' // 'moo10'
some = safeCoerce('moo', '+', 10) // 'moo10'
// 2. Usage for coercion safeguard
// -------------------------------
[] + {} // "[object Object]"
safeCoerce([], '+', {})
// TypeError: 'Unexpected coercion of type "object" and
// type "array" using "+" operator'
NaN + undefined // NaN
safeCoerce(NaN, '+', undefined);
// TypeError: Unexpected coercion of type "NaN" and type
// "undefined" using "+" operator
// 3. Usage for better undefined propagation errors
// ------------------------------------------------
const obj = {
foo: {
bar: {
baz: false
}
}
}
obj.foo.bar._MOO_.baz;
// TypeError: 'Cannot read property 'baz' of undefined'
safePropertyAccess(['foo', 'bar', '_MOO_', 'baz'], obj);
// TypeError: Property "_MOO_" does not exist in "Object.foo._MOO_"
// 4. Usage as out of bounds check
// -------------------------------
const obj = {
woo: ['']
}
obj.woo[1] // undefined
safePropertyAccess(['woo', 1], obj)
// TypeError: '"woo[1]" is out of bounds'