@lcf.vs/abstract
Version:
A simple base abstract class, in JavaScript, to extend with immutables & type forcing
54 lines (41 loc) • 1.31 kB
Markdown
# <a name="reference">Abstract</a>
A simple base abstract class to extend, with immutables & type forcing
## <a name="install">Install</a>
`npm i .vs/abstract`
## <a name="usage">Usage</a>
```js
import Abstract from '@lcf.vs/abstract'
class AbstractApplication extends Abstract {
constructor (
constructor = AbstractApplication,
{router, renderer, server, ...rest},
...requirements
) {
super(constructor, {renderer, router, server, ...rest}, ...[
...requirements, {
renderer: Object,
router: Object,
server: Object
}])
}
}
class Application extends AbstractApplication {
constructor (router, renderer, server, rest = {}) {
super(AbstractApplication, {router, renderer, server, ...rest})
}
}
```
## <a name="api">API</a>
```js
/**
* @param {Abstract=Abstract} constructor
* @param {Object=} immutables
* @param {...Object} requirements
*/
Abstract(constructor = Abstract, immutables = {}, ...requirements)
```
* `constructor`: The current abstract constructor
* `immutables`: The immutable properties
* `requirements`: The properties's constructors, to validate their types
## <a name="license">License</a>
[MIT](https://github.com/Lcfvs/content-handler/blob/master/licence.md)