@leafer/decorator
Version:
35 lines (26 loc) • 772 B
text/typescript
import { ILeaf, IObject } from '@leafer/interface'
import * as types from './data'
interface IDataTypeFunction {
(target: ILeaf, key: string): void
}
interface IDataTypeDecorator {
(...arg: any): IDataTypeFunction
}
interface IDataTypeDecoratorMap {
[key: string]: IDataTypeDecorator
}
export const DataTypeDecorator = {
list: {} as IDataTypeDecoratorMap,
register(name: string, decorator: IDataTypeDecorator): void {
this.list[name] = decorator
},
get(name: string): IDataTypeDecorator {
const decorator = this.list[name]
return decorator
}
}
Object.keys(types).forEach(key => {
if (key.includes('Type')) {
DataTypeDecorator.register(key, (types as IObject)[key] as IDataTypeDecorator)
}
})