@ganuz/define-metadata
Define Metadata is package from Ganuz library
Install
$ yarn add @ganuz/define-metadata
Or
$ npm install --save @ganuz/define-metadata
Use
Module
import {
default as defineMetadata
} from '@ganuz/define-metadata';
Browser
<script src="https://unpkg.com/@ganuz/define-metadata/bundle.umd.min.js"></script>
let {
defineMetadata
} = G;
Examples
defineMetadata('key', 'value', null, 'prop'); // throw TypeError
defineMetadata('foo', 'bar', {}); // => void
defineMetadata('key', 'value', class {}, 'prop'); // => void
class A{}
class B extends A{}
defineMetadata('color', 'red', B);
defineMetadata(Number, 45, A);
getMetadata('color', A); // => undefined
getMetadata('color', B); // => 'red'
getMetadata(Number, A); // => 45
getMetadata(Number, B); // => 45
defineMetadata('color', 'green', A);
defineMetadata(Number, 0x69, B);
getMetadata('color', A); // => 'green'
getMetadata('color', B); // => 'red'
getMetadata(Number, A); // => 45
getMetadata(Number, B); // => 105
Note: It is based on es6 WeakMap
and Map
no need for polyfill (built-in library support).
License
Copyright © Yisrael Eliev, Licensed under the MIT license.