1.2.6 • Published 5 years ago
js-data-model v1.2.6
这是啥
这是一个让表单转换稍微简单那么一点点的库~
有啥用
通过配置 model 的方式转换出一个可预期的 js 对象
啥时要
当你觉得数据转换写一堆 if else || switch case
不好看, 不好写的时候
咋子用
script
标签引入
const {DataModel, parserTypes} = JsDataModel
const model = new DataModel(/** modelOptions */)
model.parse({}) // modelOptions -> an Object formated with model
esModule
导入
import {DataModel, parserTypes} from 'js-data-model'
const model = new DataModel(
aKey: {
type: parserTypes.Number,
default: 1
}
)
model.parse({}) // modelOptions -> an Object formated with model
更多例子可参考test/*
构造参数
model
interface Model {
[key: any]: Options
}
interface Options {
type?: any
subModel?: OptionsMap
default?: any
parser?: CustomParser
fromKey?: string
}
参数 | 说明 |
---|---|
type | parser 的类型, 可使用 parserTypes.* |
subModel | model, 用来表示object 或array 下一层级的类型 |
default | 内置 parser 返回 null 或 undefined 时, 使用这个值返回, 如果返回一个对象需要是一个工厂函数 |
parser | 自定义 parser |
fromKey | 初始值来源的 key, 默认是 model 的 key |
实例方法
parser
type Parser = (val: any, model: Model, helperData?: any) => any
静态方法
addParserTypes
addParserTypes(types: Record<string, any>): void
addParser
addParser(type: any, parser: Parser): void
use
use(plugin: DataModelPlugin, options?: any): void
内置 parser 转换规则
val: 初始值
Number
初始值 | 转换结果 |
---|---|
null | undefined |
undefined | undefined |
string | val |
number | Number(val) |
object | NaN |
array | NaN |
String
初始值 | 转换结果 |
---|---|
null | undefined |
undefined | undefined |
string | String(val) |
number | val |
object | JSON.stringify(val) |
array | JSON.stringify(val) |
Boolean
初始值 | 转换结果 |
---|---|
null | false |
undefined | false |
'' | false |
string | true |
0 | false |
number | true |
object | true |
array | true |
本质是!val
Object
初始值 | 转换结果 |
---|---|
null | {} |
undefined | {} |
string' | {} |
number | {} |
object | 浅克隆(val) |
带有 subModel 的 object | {} as typeof subModel |
array | {} |
Array
初始值 | 转换结果 |
---|---|
null | [] |
undefined | [] |
string | [] |
number | [] |
object | [] |
array | 浅克隆(val) |
带有 subModel 的 array | (typeof subModel)[] |
TODO
- parserTypes.Array subModel 为 parserTypes 的值之一
- type 字段支持传入 DataModel 的实例