1 | import Scale from './base';
|
2 | import { ScaleConfig } from './types';
|
3 | type ScaleConstructor<T extends Scale = Scale> = new (cfg: ScaleConfig) => T;
|
4 |
|
5 | interface ScaleMap {
|
6 | [key: string]: ScaleConstructor;
|
7 | }
|
8 |
|
9 | const map: ScaleMap = {};
|
10 |
|
11 | function getClass(key: string): ScaleConstructor {
|
12 | return map[key];
|
13 | }
|
14 |
|
15 | function registerClass(key: string, cls: ScaleConstructor) {
|
16 | if (getClass(key)) {
|
17 | throw new Error(`type '${key}' existed.`);
|
18 | }
|
19 | map[key] = cls;
|
20 | }
|
21 |
|
22 | export { Scale, getClass as getScale, registerClass as registerScale };
|