1.2.6 • Published 7 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 modelesModule导入
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>): voidaddParser
addParser(type: any, parser: Parser): voiduse
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 的实例