diff --git a/typescript/core/base.ts b/typescript/core/base.ts index f101755b7..63d82913f 100644 --- a/typescript/core/base.ts +++ b/typescript/core/base.ts @@ -261,6 +261,10 @@ export interface _base { isWindow: (obj: any) => obj is Window; + deepClone: (obj: T) => T; + + deepExtend: merge['deepExtend']; + isDeepMatch: (object: any, attrs: any) => boolean; contains: (obj: any[], target: any, fromIndex?: number) => boolean; @@ -373,3 +377,17 @@ export interface _base { getTime: (...args: any[]) => number; } + +type merge = { + deepExtend(object: TObject, source: TSource): TObject & TSource; + + deepExtend(object: TObject, source1: TSource1, source2: TSource2): TObject & TSource1 & TSource2; + + deepExtend(object: TObject, source1: TSource1, source2: TSource2): TObject & TSource1 & TSource2; + + deepExtend(object: TObject, source1: TSource1, source2: TSource2, source3: TSource3): TObject & TSource1 & TSource2 & TSource3; + + deepExtend(object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4): TObject & TSource1 & TSource2 & TSource3 & TSource4; + + deepExtend(object: any, ...otherArgs: any[]): any; +} diff --git a/typescript/core/func/array.ts b/typescript/core/func/array.ts index 090651efc..e27e400bb 100644 --- a/typescript/core/func/array.ts +++ b/typescript/core/func/array.ts @@ -1,12 +1,5 @@ -export type _pushArray = (sArray: any[], array: any[]) => void; - -export type _pushDistinct = (sArray: any[], obj: any) => void; - -export type _pushDistinctArray = (sArray: any[], array: any[]) => void; - -type _array = { - pushArray: _pushArray; - pushDistinct: _pushDistinct; - pushDistinctArray: _pushDistinctArray; +export type _array = { + pushArray: (sArray: any[], array: any[]) => void; + pushDistinct: (sArray: any[], obj: any) => void; + pushDistinctArray: (sArray: any[], array: any[]) => void; } -export default _array; \ No newline at end of file diff --git a/typescript/core/func/date.ts b/typescript/core/func/date.ts index 6cc1e0f65..93e004f8c 100644 --- a/typescript/core/func/date.ts +++ b/typescript/core/func/date.ts @@ -13,95 +13,81 @@ export type _Date = { _MD: number[]; _OFFSET: number[]; } -/** - * 获取时区 - */ -export type _getTimezone = (date: Date) => string; -/** - * 获取指定月共有多少天 - */ -export type _getMonthDays = (date: Date, month: number) => string; +export type _date = { -/** - * 获取指定月的最后一天 - */ -export type _getLastDateOfMonth = (data: Date) => Date; + /** + * 获取时区 + */ + getTimezone: (date: Date) => string; -/** - * 获取指定时间距离当年已经过了多少天 - */ -export type _getDayOfYear = (data: Date) => number; + /** + * 获取指定月共有多少天 + */ + getMonthDays: (date: Date, month: number) => number; -/** - * 获取指定时间距离当年已经过了多少周 - */ -export type _getWeekNumber = (data: Date) => number; + /** + * 获取指定月的最后一天 + */ + getLastDateOfMonth: (data: Date) => Date; -/** - * 获取指定时间的所处季度 - */ -export type _getQuarter = (date: Date) => number; + /** + * 获取指定时间距离当年已经过了多少天 + */ + getDayOfYear: (data: Date) => number; -/** - * 离当前时间多少天的时间 - */ -export type _getOffsetDate = (date: Date, offset: number) => Date; + /** + * 获取指定时间距离当年已经过了多少周 + */ + getWeekNumber: (data: Date) => number; -/** - * 离当前时间多少天季度的时间 - */ -export type _getOffsetQuarter = (date: Date, n: number) => Date; + /** + * 获取指定时间的所处季度 + */ + getQuarter: (date: Date) => number; -/** - * 得到本季度的起始月份 - */ -export type _getQuarterStartMonth = (date: Date) => number; + /** + * 离当前时间多少天的时间 + */ + getOffsetDate: (date: Date, offset: number) => Date; -/** - * 获得本季度的起始日期 - */ -export type _getQuarterStartDate = (date: Date) => number; + /** + * 离当前时间多少天季度的时间 + */ + getOffsetQuarter: (date: Date, n: number) => Date; -/** - * 获取本季度的其实日期 - */ -export type _getQuarterEndDate = (date: Date) => number; + /** + * 得到本季度的起始月份 + */ + getQuarterStartMonth: (date: Date) => number; -/** - * 指定日期n个月之前或之后的日期 - */ -export type _getOffsetMonth = (date: Date, n: number) => Date; + /** + * 获得本季度的起始日期 + */ + getQuarterStartDate: (date: Date) => number; -/** - * 获取本周的起始日期 - */ -export type _getWeekStartDate = (date: Date) => Date; + /** + * 获取本季度的其实日期 + */ + getQuarterEndDate: (date: Date) => number; -/** - * 获取本周的结束日期 - */ -export type _getWeekEndDate = (date: Date) => Date; + /** + * 指定日期n个月之前或之后的日期 + */ + getOffsetMonth: (date: Date, n: number) => Date; -/** - * 格式化打印日期 - */ -export type _print = (date: Date, str: string) => string; + /** + * 获取本周的起始日期 + */ + getWeekStartDate: (date: Date) => Date; -export type _date = { - getTimezone: _getTimezone; - getMonthDays: _getMonthDays; - getLastDateOfMonth: _getLastDateOfMonth; - getDayOfYear: _getDayOfYear; - getWeekNumber: _getWeekNumber; - getQuarter: _getQuarter; - getOffsetDate: _getOffsetDate; - getOffsetQuarter: _getOffsetQuarter; - getQuarterStartMonth: _getQuarterStartMonth; - getQuarterStartDate: _getQuarterStartDate; - getQuarterEndDate: _getQuarterEndDate; - getOffsetMonth: _getOffsetMonth; - getWeekStartDate: _getWeekStartDate; - getWeekEndDate: _getWeekEndDate; - print: _print; + /** + * 获取本周的结束日期 + */ + getWeekEndDate: (date: Date) => Date; + + /** + * 格式化打印日期 + */ + print: (date: Date, str: string) => string; } diff --git a/typescript/core/func/function.ts b/typescript/core/func/function.ts index 55d8015b7..d3e4c81ab 100644 --- a/typescript/core/func/function.ts +++ b/typescript/core/func/function.ts @@ -1,37 +1,32 @@ -/** - * 创建唯一的名字 - * @param array 已有的名字集合 - * @param name 待生成的名字 - * @return 生成后的名字 - */ -export type _createDistinctName = (array: any[], name: string) => string; +export type _function = { -/** - * 获取搜索结果 - * @param items 待搜索的数据 - * @param keyword 关键字 - * @param param 搜索哪个属性 - */ -export type _getSearchResult = (items: any, keyword: any, param?: string) => { find: any[], match: any[] } + /** + * 创建唯一的名字 + * @param array 已有的名字集合 + * @param name 待生成的名字 + * @return 生成后的名字 + */ + createDistinctName: (array: any[], name: string) => string; -/** - * 在方法A执行之前执行方法B - * @param sFunc 方法A - * @param func 方法B - */ -export type _beforeFunc = (sFunc: Function, func: Function) => Function; + /** + * 获取搜索结果 + * @param items 待搜索的数据 + * @param keyword 关键字 + * @param param 搜索哪个属性 + */ + getSearchResult: (items: any, keyword: any, param?: string) => { find: any[], match: any[] }; -/** - * 在方法A执行之后执行方法B - * @param sFunc 方法A - * @param func 方法B - */ -export type _afterFunc = (sFunc: Function, func: Function) => Function; + /** + * 在方法A执行之前执行方法B + * @param sFunc 方法A + * @param func 方法B + */ + beforeFunc: (sFunc: Function, func: Function) => Function; -type _function = { - createDistinctName: _createDistinctName; - getSearchResult: _getSearchResult; - beforeFunc: _beforeFunc; - afterFunc: _afterFunc; + /** + * 在方法A执行之后执行方法B + * @param sFunc 方法A + * @param func 方法B + */ + afterFunc: (sFunc: Function, func: Function) => Function; } -export default _function; diff --git a/typescript/core/func/index.ts b/typescript/core/func/index.ts index 1393b1d29..381deb4d9 100644 --- a/typescript/core/func/index.ts +++ b/typescript/core/func/index.ts @@ -1,9 +1,9 @@ -import _array from "./array"; -import _string from "./string"; -import _number from "./number"; -import _function from "./function"; -import { _Date } from "./date"; +import { _array } from "./array"; +import { _string } from "./string"; +import { _number } from "./number"; +import { _function } from "./function"; +import { _Date, _date } from "./date"; -export interface _func extends _array, _string, _number, _function { +export interface _func extends _array, _string, _number, _function, _date { Date: _Date; } diff --git a/typescript/core/func/number.ts b/typescript/core/func/number.ts index d82a95962..9831185bd 100644 --- a/typescript/core/func/number.ts +++ b/typescript/core/func/number.ts @@ -1,40 +1,34 @@ +export type _number = { -/** - * 加法函数,用来得到精确的加法结果 - * @param {Number} num 被加数 - * @param {Number} arg 加数 - * @return {Number} 两个数字相加后的结果 - */ -export type _add = (num: number, arg: number) => number; + /** + * 加法函数,用来得到精确的加法结果 + * @param {Number} num 被加数 + * @param {Number} arg 加数 + * @return {Number} 两个数字相加后的结果 + */ + add: (num: number, arg: number) => number; -/** - * 减法函数,用来得到精确的减法结果 - * @param {Number} num 被减数 - * @param {Number} arg 减数 - * @return {Number} 两个数字相减后的结果 - */ -export type _sub = (num: number, arg: number) => number; + /** + * 减法函数,用来得到精确的减法结果 + * @param {Number} num 被减数 + * @param {Number} arg 减数 + * @return {Number} 两个数字相减后的结果 + */ + sub: (num: number, arg: number) => number; -/** - * 乘法函数,用来得到精确的乘法结果 - * @param {Number} num 被乘数 - * @param {Number} arg 乘数 - * @return {Number} 两个数字相乘后的结果 - */ -export type _mul = (num: number, arg: number) => number; + /** + * 乘法函数,用来得到精确的乘法结果 + * @param {Number} num 被乘数 + * @param {Number} arg 乘数 + * @return {Number} 两个数字相乘后的结果 + */ + mul: (num: number, arg: number) => number; -/** - * 除法函数,用来得到精确的除法结果 - * @param {Number} num 被除数 - * @param {Number} arg 除数 - * @return {Number} 两个数字相除后的结果 - */ -export type _div = (num: number, arg: number) => number; - -type _number = { - add: _add; - sub: _sub; - mul: _mul; - div: _div; + /** + * 除法函数,用来得到精确的除法结果 + * @param {Number} num 被除数 + * @param {Number} arg 除数 + * @return {Number} 两个数字相除后的结果 + */ + div: (num: number, arg: number) => number; } -export default _number \ No newline at end of file diff --git a/typescript/core/func/string.ts b/typescript/core/func/string.ts index f0f25a190..02df541a5 100644 --- a/typescript/core/func/string.ts +++ b/typescript/core/func/string.ts @@ -1,66 +1,59 @@ -/** - * 判断字符串是否已指定的字符串开始 - * @param str source字符串 - * @param {String} startTag 指定的开始字符串 - * @return {Boolean} 如果字符串以指定字符串开始则返回true,否则返回false - */ -export type _startWith = (str: string, startTag: string) => boolean; +export type _string = { + + /** + * 判断字符串是否已指定的字符串开始 + * @param str source字符串 + * @param {String} startTag 指定的开始字符串 + * @return {Boolean} 如果字符串以指定字符串开始则返回true,否则返回false + */ + startWith: (str: string, startTag: string) => boolean; -/** - * 判断字符串是否以指定的字符串结束 - * @param str source字符串 - * @param {String} endTag 指定的字符串 - * @return {Boolean} 如果字符串以指定字符串结束则返回true,否则返回false - */ -export type _endWith = (str: string, endTag: string) => boolean; + /** + * 判断字符串是否以指定的字符串结束 + * @param str source字符串 + * @param {String} endTag 指定的字符串 + * @return {Boolean} 如果字符串以指定字符串结束则返回true,否则返回false + */ + endWith: (str: string, endTag: string) => boolean; -/** - * 获取url中指定名字的参数 - * @param str source字符串 - * @param {String} name 参数的名字 - * @return {String} 参数的值 - */ -export type _getQuery = (str: string, name: string) => string|null; + /** + * 获取url中指定名字的参数 + * @param str source字符串 + * @param {String} name 参数的名字 + * @return {String} 参数的值 + */ + getQuery: (str: string, name: string) => string|null; -/** - * 给url加上给定的参数 - * @param str source字符串 - * @param {Object} paras 参数对象,是一个键值对对象 - * @return {String} 添加了给定参数的url - */ -export type _appendQuery = (str: string, paras: {[key: string]: string|number}) => string; + /** + * 给url加上给定的参数 + * @param str source字符串 + * @param {Object} paras 参数对象,是一个键值对对象 + * @return {String} 添加了给定参数的url + */ + appendQuery: (str: string, paras: {[key: string]: string|number}) => string; -/** - * 将所有符合第一个字符串所表示的字符串替换成为第二个字符串 - * @param str source字符串 - * @param {String} s1 要替换的字符串的正则表达式 - * @param {String} s2 替换的结果字符串 - * @returns {String} 替换后的字符串 - */ -export type _replaceAll = (str: string, s1: string, s2: string) => string; + /** + * 将所有符合第一个字符串所表示的字符串替换成为第二个字符串 + * @param str source字符串 + * @param {String} s1 要替换的字符串的正则表达式 + * @param {String} s2 替换的结果字符串 + * @returns {String} 替换后的字符串 + */ + replaceAll: (str: string, s1: string, s2: string) => string; -/** - * 总是让字符串以指定的字符开头 - * @param str source字符串 - * @param {String} start 指定的字符 - * @returns {String} 以指定字符开头的字符串 - */ -export type _perfectStart = (str: string, start: string) => string; + /** + * 总是让字符串以指定的字符开头 + * @param str source字符串 + * @param {String} start 指定的字符 + * @returns {String} 以指定字符开头的字符串 + */ + perfectStart: (str: string, start: string) => string; -/** - * 获取字符串中某字符串的所有项位置数组 - * @param str source字符串 - * @param {String} sub 子字符串 - * @return {Number[]} 子字符串在父字符串中出现的所有位置组成的数组 - */ -export type _allIndexOf = (str: string, sub: string) => number[]; -type _string = { - startWith: _startWith; - endWith: _endWith; - getQuery: _getQuery; - appendQuery: _appendQuery; - replaceAll: _replaceAll; - perfectStart: _perfectStart; - allIndexOf: _allIndexOf; + /** + * 获取字符串中某字符串的所有项位置数组 + * @param str source字符串 + * @param {String} sub 子字符串 + * @return {Number[]} 子字符串在父字符串中出现的所有位置组成的数组 + */ + allIndexOf: (str: string, sub: string) => number[]; } -export default _string \ No newline at end of file diff --git a/typescript/core/var.ts b/typescript/core/var.ts new file mode 100644 index 000000000..729d4762b --- /dev/null +++ b/typescript/core/var.ts @@ -0,0 +1,132 @@ +export interface _var { + MAX: number; + MIN: number; + EVENT_RESPONSE_TIME: number; + zIndex_layer: number; + zIndex_popover: number; + zIndex_popup: number; + zIndex_masker: number; + zIndex_tip: number; + emptyStr: string; + emptyFn: Function; + empty: null, + Key: { + 48: string; + 49: string; + 50: string; + 51: string; + 52: string; + 53: string; + 54: string; + 55: string; + 56: string; + 57: string; + 65: string; + 66: string; + 67: string; + 68: string; + 69: string; + 70: string; + 71: string; + 72: string; + 73: string; + 74: string; + 75: string; + 76: string; + 77: string; + 78: string; + 79: string; + 80: string; + 81: string; + 82: string; + 83: string; + 84: string; + 85: string; + 86: string; + 87: string; + 88: string; + 89: string; + 90: string; + 96: string; + 97: string; + 98: string; + 99: string; + 100: string; + 101: string; + 102: string; + 103: string; + 104: string; + 105: string; + 106: string; + 107: string; + 109: string; + 110: string; + 111: string; + }, + KeyCode: { + BACKSPACE: number; + COMMA: number; + DELETE: number; + DOWN: number; + END: number; + ENTER: number; + ESCAPE: number; + HOME: number; + LEFT: number; + NUMPAD_ADD: number; + NUMPAD_DECIMAL: number; + NUMPAD_DIVIDE: number; + NUMPAD_ENTER: number; + NUMPAD_MULTIPLY: number; + NUMPAD_SUBTRACT: number; + PAGE_DOWN: number; + PAGE_UP: number; + PERIOD: number; + RIGHT: number; + SPACE: number; + TAB: number; + UP: number; + }, + Status: { + SUCCESS: number; + WRONG: number; + START: number; + END: number; + WAITING: number; + READY: number; + RUNNING: number; + OUTOFBOUNDS: number; + NULL: number; + }, + Direction: { + Top: string; + Bottom: string; + Left: string; + Right: string; + Custom: string; + }, + Axis: { + Vertical: string; + Horizontal: string; + }, + Selection: { + Default: number; + None: number; + Single: number; + Multi: number; + All: number; + }, + HorizontalAlign: { + Left: string; + Right: string; + Center: string; + Stretch: string; + }, + VerticalAlign: { + Middle: string; + Top: string; + Bottom: string; + Stretch: string; + }, + StartOfWeek: number; +} diff --git a/typescript/index.ts b/typescript/index.ts index f4f118d34..a2f9292da 100644 --- a/typescript/index.ts +++ b/typescript/index.ts @@ -36,6 +36,7 @@ import * as decorator from "./core/decorator/decorator"; import { _func } from "./core/func"; import { _i18n } from "./core/i18n"; import { _Plugin } from "./core/plugin"; +import { _var } from "./core/var"; import { OB, _OB } from "./core/ob"; import { _Widget, _WidgetStatic, Widget } from "./core/widget"; import { _inject } from "./core/inject"; @@ -146,7 +147,7 @@ type ClassConstructor = T & { readonly xtype: string; } -export interface BI extends _func, _i18n, _base, _inject { +export interface BI extends _func, _i18n, _base, _inject, _var { OB: ClassConstructor<_OB>; Plugin: _Plugin; Widget: ClassConstructor<_Widget> & _WidgetStatic;