类装饰器
类的元数据(配置数据)
类的元数据(配置数据)结构如下:
interface ClassDecoratorConfig {
/**
* 默认为 auto
* auto | null | undefined: 不干扰属性的存在与否
* include: 默认该 class 下拥有装饰器的属性必定会存在
* exclude: 默认该 class 下拥有装饰器的属性必定不会存在
* partial: 默认该 class 下拥有装饰器的属性有时会存在,有时不会存在
*/
partial?: 'auto' | 'include' | 'exclude' | 'partial' | undefined | null
/**
* 默认为 true
* false: 默认该 class 下拥有装饰器的属性在同一个 js runtime 里复用第一次生成的随机值
* true: 默认该 class 下拥有装饰器的属性在同一个 js runtime 里每次都生成新的随机值
*/
alwaysRandom?: boolean
}
@DefaultPartial
设置类元数据(配置数据)的 partial
属性为 partial
。
即设置默认该 class 下拥有装饰器的属性有时会存在,有时不会存在:
import {DefaultPartial, Random, IsInclude} from 'class-mock'
/**
* 默认该 class 下拥有装饰器的属性有时会存在,有时不会存在
*/
@DefaultPartial()
class Student {
/**
* 本属性默认有时候会存在,有时候不会存在
*/
@Random.words(5)
name?: string
/**
* 强制本属性存在
*/
@IsInclude()
@Random.number()
age!: number
/**
* 没有装饰器的属性不参与数据生成
*/
like?: string[]
}
@DefaultInclude
设置类元数据(配置数据)的 partial
属性为 include
。
即设置默认该 class 下拥有装饰器的属性必定会存在:
import {DefaultInclude, Random, IsPartial} from 'class-mock'
/**
* 默认该 class 下拥有装饰器的属性必定会存在
*/
@DefaultInclude()
class Student {
/**
* 本属性默认存在
*/
@Random.words(5)
name?: string
/**
* 强制本属性有时候会存在,有时候不会存在
*/
@IsPartial()
@Random.number()
age!: number
/**
* 没有装饰器的属性不参与数据生成
*/
like?: string[]
}
@DefaultExclude
设置类元数据(配置数据)的 partial
属性为 exclude
。
即设置默认该 class 下拥有装饰器的属性必定不会存在:
import {DefaultExclude, Random, IsInclude} from 'class-mock'
/**
* 默认该 class 下拥有装饰器的属性必定不会存在
*/
@DefaultExclude()
class Student {
/**
* 本属性默认不存在
*/
@Random.words(5)
name?: string
/**
* 强制本属性存在
*/
@IsInclude()
@Random.number()
age!: number
/**
* 没有装饰器的属性不参与数据生成
*/
like?: string[]
}
@DefaultAlwaysRandom
设置类元数据(配置数据)的 alwaysRandom
属性为 true
。
即设置默认该 class 下拥有装饰器的属性在同一个 js runtime 里每次都生成新的随机值:
import {DefaultAlwaysRandom, Random, IsNotAlwaysRandom} from 'class-mock'
/**
* 默认该 class 下拥有装饰器的属性在同一个 js runtime 里每次都生成新的随机值
*/
@DefaultAlwaysRandom()
class Student {
/**
* 本属性默认在同一个 js runtime 里每次都生成新的随机值
*/
@Random.words(5)
name?: string
/**
* 强制本属性在同一个 js runtime 里每次都复用第一次生成的随机值
*/
@IsNotAlwaysRandom()
@Random.number()
age!: number
/**
* 没有装饰器的属性不参与数据生成
*/
like?: string[]
}
@DefaultNotAlwaysRandom
设置类元数据(配置数据)的 alwaysRandom
属性为 false
。
即设置默认该 class 下拥有装饰器的属性在同一个 js runtime 里复用第一次生成的随机值:
import {DefaultNotAlwaysRandom, Random, IsAlwaysRandom} from 'class-mock'
/**
* 默认该 class 下拥有装饰器的属性在同一个 js runtime 里复用第一次生成的随机值
*/
@DefaultNotAlwaysRandom()
class Student {
/**
* 本属性默认在同一个 js runtime 里每次都复用第一次生成的随机值
*/
@Random.words(5)
name?: string
/**
* 强制本属性在同一个 js runtime 里每次都生成新的随机值
*/
@IsAlwaysRandom()
@Random.number()
age!: number
/**
* 没有装饰器的属性不参与数据生成
*/
like?: string[]
}