All files / src/decorators Prop.ts

100% Statements 7/7
50% Branches 1/2
100% Functions 3/3
100% Lines 7/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24  1x 1x 1x               1x 1x   1x       1x          
import { createDecorator } from './Component'
import type { Doraemon } from '../Doraemon'
import type { PropOptions } from '../types/options'
 
type Constructor = {
  new (...args: any[]): any;
}
 
/**
 * decorator of a prop
 *
 * @param  options the options for the prop
 * @return PropertyDecorator | void
 */
export function Prop (options?: (PropOptions | Constructor[] | Constructor)): PropertyDecorator {
  return function (target: Doraemon, key: string) {
    createDecorator((componentOptions, k) => {
      ;(componentOptions.props || ((componentOptions.props = {}) as any))[
        k
      ] = options
    })(target, key)
  }
}