@thingjs/xplugin-core
Version:
xplugin核心组件包,完成插件生命周期配置实现
1,515 lines • 807 kB
TypeScript
/**
* <p>THINGJSX二开API命名空间</p>
*/
declare namespace THINGX {
/**
* <p>事件</p>
*/
namespace Event {
/**
* @property target - <p>监听对象</p>
* @property event - <p>监听事件</p>
* @property [condition] - <p>物体类型选择条件</p>
* @property [suffix] - <p>可变事件后缀</p>
* @property callback - <p>监听回调函数</p>
* @property [priority] - <p>监听优先级</p>
* @property [tag] - <p>监听标签</p>
*/
type ListenConfig = {
target: THING.BaseObject;
event: THINGX.Event.Type;
condition?: string;
suffix?: string;
callback: (...params: any[]) => any;
priority?: number;
tag?: string;
};
/**
* @property target - <p>监听对象</p>
* @property event - <p>监听事件</p>
* @property [condition] - <p>物体类型选择条件</p>
* @property [suffix] - <p>可变事件后缀</p>
* @property data - <p>事件信息,传递回调参数</p>
* @property [compatibility = true] - <p>是否兼容遗产事件触发</p>
* @property [tag] - <p>监听标签</p>
*/
type TriggerConfig = {
target: THING.BaseObject;
event: THINGX.Event.Type;
condition?: string;
suffix?: string;
data: any;
compatibility?: boolean;
tag?: string;
};
/**
* @property target - <p>监听对象</p>
* @property event - <p>监听事件</p>
* @property [condition] - <p>物体类型选择条件</p>
* @property [suffix] - <p>可变事件后缀</p>
* @property [compatibility = true] - <p>是否兼容遗产事件触发</p>
* @property [tag] - <p>监听标签</p>
*/
type ResumeConfig = {
target: THING.BaseObject;
event: THINGX.Event.Type;
condition?: string;
suffix?: string;
compatibility?: boolean;
tag?: string;
};
/**
* @property target - <p>监听对象</p>
* @property event - <p>监听事件</p>
* @property [condition] - <p>物体类型选择条件</p>
* @property [suffix] - <p>可变事件后缀</p>
* @property [compatibility = true] - <p>是否兼容遗产事件触发</p>
* @property [tag] - <p>监听标签</p>
*/
type PauseConfig = {
target: THING.BaseObject;
event: THINGX.Event.Type;
condition?: string;
suffix?: string;
compatibility?: boolean;
tag?: string;
};
/**
* @property target - <p>监听对象</p>
* @property event - <p>监听事件</p>
* @property [condition] - <p>物体类型选择条件</p>
* @property [suffix] - <p>可变事件后缀</p>
* @property [tag] - <p>监听标签</p>
* @property [compatibility = true] - <p>是否兼容遗产事件触发</p>
* @property [callback] - <p>监听回调函数</p>
*/
type OffConfig = {
target: THING.BaseObject;
event: THINGX.Event.Type;
condition?: string;
suffix?: string;
tag?: string;
compatibility?: boolean;
callback?: (...params: any[]) => any;
};
/**
* <p>监听事件</p>
* @param config - <p>监听事件配置</p>
* @returns <p>boolean 是否监听成功</p>
*/
function on(config: THINGX.Event.ListenConfig): any;
/**
* <p>监听事件, 只触发一次</p>
* @param config - <p>监听事件配置</p>
* @returns <p>boolean 是否监听成功</p>
*/
function one(config: THINGX.Event.ListenConfig): any;
/**
* <p>触发事件</p>
* @param config - <p>监听事件配置</p>
* @returns <p>boolean 是否触发成功</p>
*/
function trigger(config: THINGX.Event.TriggerConfig): any;
/**
* <p>取消监听事件</p>
* @param config - <p>监听事件配置</p>
*/
function off(config: THINGX.Event.OffConfig): void;
/**
* <p>暂停注册事件</p>
* @param config - <p>监听事件配置</p>
*/
function pause(config: THINGX.Event.PauseConfig): void;
/**
* <p>恢复注册事件</p>
* @param config - <p>监听事件配置</p>
*/
function resume(config: THINGX.Event.ResumeConfig): void;
/**
* <p>新建事件</p>
* @param val - <p>事件名称</p>
* @param [legacyVal] - <p>遗产事件名称</p>
* @param [withSuffix = false] - <p>是否有后缀</p>
*/
function create(val: string, legacyVal?: string, withSuffix?: boolean): any;
namespace Tag {
/**
* <p>显示孪生体面板</p>
*/
var ShowDigitalTwinPanel: any;
/**
* <p>隐藏孪生体面板</p>
*/
var HideDigitalTwinPanel: any;
/**
* <p>创建显示孪生体提示</p>
*/
var CreateDigitalTwinTip: any;
/**
* <p>销毁孪生体提示</p>
*/
var DestroyDigitalTwinTip: any;
/**
* <p>显示孪生体默认效果</p>
*/
var ShowDigitalTwinDefaultEffect: any;
/**
* <p>隐藏孪生体默认效果</p>
*/
var HideDigitalTwinDefaultEffect: any;
/**
* <p>设置选中默认效果</p>
*/
var SetSelectDefaultEffect: any;
/**
* <p>取消设置选中默认效果</p>
*/
var SetUnselectDefaultEffect: any;
/**
* <p>停止飞行</p>
*/
var StopFly: any;
/**
* <p>设置兄弟房间透明</p>
*/
var SetBrotherRoomsTransparency: any;
/**
* <p>设置兄弟房间不透明</p>
*/
var SetBrotherRoomsNotTransparency: any;
/**
* <p>设置楼层透明</p>
*/
var SetFloorTransparency: any;
/**
* <p>设置楼层不透明</p>
*/
var SetFloorNotTransparency: any;
/**
* <p>设置兄弟孪生体透明</p>
*/
var SetBrotherTwinsTransparency: any;
/**
* <p>设置兄弟孪生体不透明</p>
*/
var SetBrotherTwinsNotTransparency: any;
/**
* <p>显示建筑告警</p>
*/
var ShowAlarmForBuilding: any;
/**
* <p>为当前层级设置告警参数</p>
*/
var SetAlarmParamsForCurrentLevel: any;
/**
* <p>创建图层</p>
*/
var CreateLayer: any;
/**
* <p>更新监控效果</p>
*/
var UpdateMonitorEffect: any;
/**
* <p>进入建筑后,只有一层楼则直接进入楼层</p>
*/
var EnterFloorDirectAfterEnterBuildingIfOneFloorInBuilding: any;
/**
* <p>退出楼层后,只有一层楼则直接进入园区</p>
*/
var EnterCampusDirectAfterLeaveFloorIfOneFloorInBuilding: any;
/**
* <p>进入楼层后,只有一间房则直接进入房间</p>
*/
var EnterRoomDirectAfterEnterFloorIfOneRoomInFloor: any;
/**
* <p>退出房间后,只有一层楼则直接进入建筑</p>
*/
var EnterBuildingDirectAfterLeaveRoomIfOneRoomInFloor: any;
}
/**
* <p>事件类型</p>
*/
namespace Type { }
}
/**
* <p>告警模块</p>
*/
namespace Alarm {
/**
* <p>告警查询配置</p>
* @property [acknowledged] - <p>处理状态</p>
* @property alarmLevel - <p>告警级别</p>
* @property [classNames = [1, 2, 3, 4]] - <p>孪生体业务分类,默认为空数组代表所有</p>
* @property dcIds - <p>场景的数据库ID数组(<em>DBID</em>)</p>
* @property [enableGlobal = false/true] - <p>开启全局查询,当前层级是地图的话默认true,园区默认false。当为true时,需要设置dcIds</p>
* @property fromCiId - <p>查询的起始层级的数据库ID(<em>DBID</em>)</p>
* @property keyword - <p>搜索关键词,会匹配孪生体的名称,告警详情</p>
* @property orAttrs - <p>孪生体属性条件筛选 默认空数组代表没有过滤条件</p>
* @property [sortType = time-desc] - <p>告警排序方式 默认按时间倒序 time-asc 告警时间正序/time-desc 告警时间倒序/level-asc 告警级别正序/level-desc 告警级别倒序</p>
*/
type QueryConfig = {
acknowledged?: string;
alarmLevel: number[];
classNames?: string[];
dcIds: string[];
enableGlobal?: boolean;
fromCiId: string;
keyword: string;
orAttrs: object[];
sortType?: string;
};
/**
* <p>告警等级配置</p>
* @property color - <p>告警颜色,十六进制</p>
* @property name - <p>告警级别名称</p>
* @property sound - <p>告警声音配置</p>
* @property sound.name - <p>告警声音名称</p>
* @property sound.url - <p>告警声音资源url</p>
*/
type LevelItemConfig = {
color: string;
name: string;
sound: {
name: string;
url: string;
};
};
/**
* <p>激活告警系统</p>
* @param purpose - <p>激活目的</p>
*/
function activate(purpose: string): void;
/**
* <p>取消激活告警系统</p>
* @param purpose - <p>取消激活目的</p>
*/
function deactivate(purpose: string): void;
/**
* <p>告警系统是否激活</p>
*/
function isActivated(): boolean;
/**
* <p>获取已存在的激活告警系统的目的</p>
* @returns <ul>
* <li>激活告警系统的目的</li>
* </ul>
*/
function getPurpose(): string[];
/**
* <p>激活3D告警效果</p>
*/
function activateEffect(): void;
/**
* <p>取消激活3D告警效果</p>
*/
function deactivateEffect(): void;
/**
* <p>3D告警效果是否被激活</p>
*/
function isEffectActivated(): boolean;
/**
* <p>激活告警声音效果</p>
*/
function activateSound(): void;
/**
* <p>取消激活告警声音效果</p>
*/
function deactivateSound(): void;
/**
* <p>告警声音效果是否被激活</p>
*/
function isSoundActivated(): boolean;
/**
* <p>告警系统是否初始化完成</p>
*/
function isInitialized(): boolean;
/**
* <p>获取告警级别配置</p>
* @returns <ul>
* <li>告警级别配置</li>
* </ul>
*/
function getLevelConfig(): Map<number, THINGX.Alarm.LevelItemConfig>;
/**
* <p>获取告警查询配置</p>
*/
function getQueryConfig(): AlarmQueryConfig;
/**
* <p>设置告警查询配置</p>
* @example
* // 设置查询告警级别为 1,2,3 级的告警
* THINGX.Alarm.setQueryConfig({
* alarmLevel: [1,2,3]
* });
* // 设置查询孪生体业务分类为 '温湿度感应器' 的告警数据
* THINGX.Alarm.setQueryConfig({
* classNames: ['温湿度感应器']
* });
* // 根据孪生体属性筛选告警
* THINGX.Alarm.setQueryConfig({
* orAttrs:[{ "key": '业务分类', "value":"空调", "optType": 1 }]
* });
* @param config - <p>告警查询配置</p>
* @param [isRemoteData = true] - <p>是否立即请求告警</p>
*/
function setQueryConfig(config: THINGX.Alarm.QueryConfig, isRemoteData?: boolean): void;
/**
* <p>获取所有告警数据</p>
*/
function getAllData(): any;
/**
* <p>获取全局告警数据最高告警级别 数值约小级别越高, 默认1为最高级,对应“严重”告警级别,依次向下排</p>
*/
function getHighestLevel(): number | null;
/**
* <p>获取孪生体上最高告警级别数据</p>
* @param digitalTwin - <p>孪生体对象</p>
* @param isTraverse - <p>是否遍历该孪生体的孩子</p>
*/
function getHighestLevelDataWithTwin(digitalTwin: THING.BaseObject, isTraverse: boolean): any | null;
/**
* <p>开始请求后台接口更新所有告警信息,activate后会自动调用,尽量使用activate来控制告警系统</p>
*/
function startRequestData(): void;
/**
* <p>告警查询配置</p>
* @property [acknowledged] - <p>处理状态</p>
* @property alarmLevel - <p>告警级别</p>
* @property [classNames = [1, 2, 3, 4]] - <p>孪生体业务分类,默认为空数组代表所有</p>
* @property dcIds - <p>场景的数据库ID数组(<em>DBID</em>)</p>
* @property [enableGlobal = false/true] - <p>开启全局查询,当前层级是地图的话默认true,园区默认false。当为true时,需要设置dcIds</p>
* @property fromCiId - <p>查询的起始层级的数据库ID(<em>DBID</em>)</p>
* @property keyword - <p>搜索关键词,会匹配孪生体的名称,告警详情</p>
* @property orAttrs - <p>孪生体属性条件筛选 默认空数组代表没有过滤条件</p>
* @property [sortType = time-desc] - <p>告警排序方式 默认按时间倒序 time-asc 告警时间正序/time-desc 告警时间倒序/level-asc 告警级别正序/level-desc 告警级别倒序</p>
*/
type QueryConfig = {
acknowledged?: string;
alarmLevel: number[];
classNames?: string[];
dcIds: string[];
enableGlobal?: boolean;
fromCiId: string;
keyword: string;
orAttrs: object[];
sortType?: string;
};
/**
* <p>告警等级配置</p>
* @property color - <p>告警颜色,十六进制</p>
* @property name - <p>告警级别名称</p>
* @property sound - <p>告警声音配置</p>
* @property sound.name - <p>告警声音名称</p>
* @property sound.url - <p>告警声音资源url</p>
*/
type LevelItemConfig = {
color: string;
name: string;
sound: {
name: string;
url: string;
};
};
/**
* <p>激活告警系统</p>
* @param purpose - <p>激活目的</p>
*/
function activate(purpose: string): void;
/**
* <p>取消激活告警系统</p>
* @param purpose - <p>取消激活目的</p>
*/
function deactivate(purpose: string): void;
/**
* <p>告警系统是否激活</p>
*/
function isActivated(): boolean;
/**
* <p>获取已存在的激活告警系统的目的</p>
* @returns <ul>
* <li>激活告警系统的目的</li>
* </ul>
*/
function getPurpose(): string[];
/**
* <p>激活3D告警效果</p>
*/
function activateEffect(): void;
/**
* <p>取消激活3D告警效果</p>
*/
function deactivateEffect(): void;
/**
* <p>3D告警效果是否被激活</p>
*/
function isEffectActivated(): boolean;
/**
* <p>激活告警声音效果</p>
*/
function activateSound(): void;
/**
* <p>取消激活告警声音效果</p>
*/
function deactivateSound(): void;
/**
* <p>告警声音效果是否被激活</p>
*/
function isSoundActivated(): boolean;
/**
* <p>告警系统是否初始化完成</p>
*/
function isInitialized(): boolean;
/**
* <p>获取告警级别配置</p>
* @returns <ul>
* <li>告警级别配置</li>
* </ul>
*/
function getLevelConfig(): Map<number, THINGX.Alarm.LevelItemConfig>;
/**
* <p>获取告警查询配置</p>
*/
function getQueryConfig(): AlarmQueryConfig;
/**
* <p>设置告警查询配置</p>
* @example
* // 设置查询告警级别为 1,2,3 级的告警
* THINGX.Alarm.setQueryConfig({
* alarmLevel: [1,2,3]
* });
* // 设置查询孪生体业务分类为 '温湿度感应器' 的告警数据
* THINGX.Alarm.setQueryConfig({
* classNames: ['温湿度感应器']
* });
* // 根据孪生体属性筛选告警
* THINGX.Alarm.setQueryConfig({
* orAttrs:[{ "key": '业务分类', "value":"空调", "optType": 1 }]
* });
* @param config - <p>告警查询配置</p>
* @param [isRemoteData = true] - <p>是否立即请求告警</p>
*/
function setQueryConfig(config: THINGX.Alarm.QueryConfig, isRemoteData?: boolean): void;
/**
* <p>获取所有告警数据</p>
*/
function getAllData(): any;
/**
* <p>获取全局告警数据最高告警级别 数值约小级别越高, 默认1为最高级,对应“严重”告警级别,依次向下排</p>
*/
function getHighestLevel(): number | null;
/**
* <p>获取孪生体上最高告警级别数据</p>
* @param digitalTwin - <p>孪生体对象</p>
* @param isTraverse - <p>是否遍历该孪生体的孩子</p>
*/
function getHighestLevelDataWithTwin(digitalTwin: THING.BaseObject, isTraverse: boolean): any | null;
/**
* <p>开始请求后台接口更新所有告警信息,activate后会自动调用,尽量使用activate来控制告警系统</p>
*/
function startRequestData(): void;
}
/**
* <p>App模块</p>
*/
namespace App {
/**
* <p>当前app</p>
*/
var App.current: THING.App | undefined;
/**
* <p>当前层级孪生体对象</p>
*/
var App.currentLevel: THING.BaseObject | undefined;
/**
* <p>当前app</p>
*/
var App.current: THING.App | undefined;
/**
* <p>当前选择的第一个孪生体对象</p>
*/
var App.currentSelected: THING.BaseObject | undefined;
/**
* <p>当前场景信息</p>
*/
var App.sceneInfo: any;
/**
* <p>当前场景CICode</p>
*/
var App.sceneCICode: string;
/**
* <p>通过ThingJS语法查询当前app下孪生体集合</p>
* @param expression - <p>ThingJS语法表达式</p>
* @returns <ul>
* <li>查询到的孪生体</li>
* </ul>
*/
function App.queryWithThingJSExpression(expression: string): THING.BaseObject[];
/**
* <p>当前ThingJS-X版本号</p>
*/
var App.version: string;
/**
* <p>当前使用的标记库版本号</p>
*/
var App.vendorMarkerVersion: string;
/**
* <p>当前使用的ThingJS的版本号</p>
*/
var App.vendorThingJSVersion: string;
/**
* <p>当前使用的地图的版本号</p>
*/
var App.vendorGeoVersion: string;
/**
* <p>当前app</p>
*/
var App.current: THING.App | undefined;
/**
* <p>当前层级孪生体对象</p>
*/
var App.currentLevel: THING.BaseObject | undefined;
/**
* <p>当前app</p>
*/
var App.current: THING.App | undefined;
/**
* <p>当前选择的第一个孪生体对象</p>
*/
var App.currentSelected: THING.BaseObject | undefined;
/**
* <p>当前场景信息</p>
*/
var App.sceneInfo: any;
/**
* <p>当前场景CICode</p>
*/
var App.sceneCICode: string;
/**
* <p>通过ThingJS语法查询当前app下孪生体集合</p>
* @param expression - <p>ThingJS语法表达式</p>
* @returns <ul>
* <li>查询到的孪生体</li>
* </ul>
*/
function App.queryWithThingJSExpression(expression: string): THING.BaseObject[];
/**
* <p>当前ThingJS-X版本号</p>
*/
var App.version: string;
/**
* <p>当前使用的标记库版本号</p>
*/
var App.vendorMarkerVersion: string;
/**
* <p>当前使用的ThingJS的版本号</p>
*/
var App.vendorThingJSVersion: string;
/**
* <p>当前使用的地图的版本号</p>
*/
var App.vendorGeoVersion: string;
}
/**
* <p>业务模块</p>
*/
namespace Business {
/**
* <p>显示业务模块</p>
*/
function show(): void;
/**
* <p>隐藏业务模块</p>
*/
function hide(): void;
/**
* <p>获取指定层级下指定名称业务</p>
* @param [level = THINGX.App.currentLevel] - <p>指定层级</p>
* @param [name=] - <p>业务名称,为空则获取指定层级下所有业务</p>
* @returns <ul>
* <li>业务实例</li>
* </ul>
*/
function get(level?: THING.BaseObject | THINGX.CONST.DEFAULT_DIGITAL_TWIN_CLASS, name=?: string): object[];
/**
* <p>激活业务</p>
* @param name - <p>业务名称</p>
*/
function activate(name: string): void;
/**
* <p>取消激活当前业务</p>
*/
function deactivate(): void;
/**
* <p>获取当前激活的业务信息</p>
*/
function getActivated(): any;
/**
* <p>重新读取可视化配置 并根据当前层级重新创建业务</p>
* @returns <ul>
* <li>是否刷新成功</li>
* </ul>
*/
function refresh(): Promise<boolean>;
/**
* <p>显示业务面板- 建议通过activate激活业务</p>
* @param name - <p>业务名称</p>
*/
function showPanel(name: string): void;
/**
* <p>隐藏业务面板 - 建议通过deactivate取消激活业务</p>
* @param name - <p>业务名称</p>
*/
function hidePanel(name: string): void;
/**
* <p>获取业务配置</p>
* @param [level = THINGX.App.currentLevel] - <p>孪生体对象/孪生体分类</p>
* @param [name=] - <p>业务名称,非空的话返回指定配置,否则返回所有配置</p>
*/
function getConfig(level?: THING.BaseObject | THINGX.CONST.DEFAULT_DIGITAL_TWIN_CLASS, name=?: string): any | null;
/**
* <p>获取当前业务面板配置</p>
*/
function getPanelConfig(): any | null;
/**
* <p>获取当前激活的业务名称</p>
* @param [isFullName = false] - <p>是否获取业务全称</p>
* @returns <ul>
* <li>当前激活的业务名称/全称</li>
* </ul>
*/
function getCurrentName(isFullName?: boolean): string;
/**
* <p>显示业务模块</p>
*/
function show(): void;
/**
* <p>隐藏业务模块</p>
*/
function hide(): void;
/**
* <p>获取指定层级下指定名称业务</p>
* @param [level = THINGX.App.currentLevel] - <p>指定层级</p>
* @param [name=] - <p>业务名称,为空则获取指定层级下所有业务</p>
* @returns <ul>
* <li>业务实例</li>
* </ul>
*/
function get(level?: THING.BaseObject | THINGX.CONST.DEFAULT_DIGITAL_TWIN_CLASS, name=?: string): object[];
/**
* <p>激活业务</p>
* @param name - <p>业务名称</p>
*/
function activate(name: string): void;
/**
* <p>取消激活当前业务</p>
*/
function deactivate(): void;
/**
* <p>获取当前激活的业务信息</p>
*/
function getActivated(): any;
/**
* <p>重新读取可视化配置 并根据当前层级重新创建业务</p>
* @returns <ul>
* <li>是否刷新成功</li>
* </ul>
*/
function refresh(): Promise<boolean>;
/**
* <p>显示业务面板- 建议通过activate激活业务</p>
* @param name - <p>业务名称</p>
*/
function showPanel(name: string): void;
/**
* <p>隐藏业务面板 - 建议通过deactivate取消激活业务</p>
* @param name - <p>业务名称</p>
*/
function hidePanel(name: string): void;
/**
* <p>获取业务配置</p>
* @param [level = THINGX.App.currentLevel] - <p>孪生体对象/孪生体分类</p>
* @param [name=] - <p>业务名称,非空的话返回指定配置,否则返回所有配置</p>
*/
function getConfig(level?: THING.BaseObject | THINGX.CONST.DEFAULT_DIGITAL_TWIN_CLASS, name=?: string): any | null;
/**
* <p>获取当前业务面板配置</p>
*/
function getPanelConfig(): any | null;
/**
* <p>获取当前激活的业务名称</p>
* @param [isFullName = false] - <p>是否获取业务全称</p>
* @returns <ul>
* <li>当前激活的业务名称/全称</li>
* </ul>
*/
function getCurrentName(isFullName?: boolean): string;
}
/**
* <p>摄像机模块</p>
*/
namespace Camera {
/**
* @property position - <p>摄相机位置</p>
* @property target - <p>摄像机看点</p>
*/
type Pose = {
position: number[];
target: number[];
};
/**
* <p>飞到最佳视角查看孪生体</p>
* @example
* // 单个孪生体飞行
* const currentLevel = THINGX.App.currentLevel;
* cosnt pose = THINGX.Camera.getPoseWithDigitalTwin(currentLevel, {
* x: 30, y: 60, z: 1, tx: 0, ty: 0, tr: 0
* });
* THINGX.Camera.flyTo(currentLevel, {
* complete: (ev) => {
* console.log('飞行完毕')
* },
* pose: pose,
* time: 2000,
* });
*
* // 孪生体集合飞行
* let dir = THING.Math.scaleVector(THING.App.current.camera.direction, -1); // 默认方向向量
* dir[0] += 1;
* const pose = THINGX.Camera.getPoseWithDigitalTwinSet(THINGX.CONST.DEFAULT_DIGITAL_TWIN_CLASS.BUILDING, {
* useDir: dir,
* radiusScale: 1.5,
* });
* THINGX.Camera.flyTo(THINGX.CONST.DEFAULT_DIGITAL_TWIN_CLASS.BUILDING, {
* complete: (ev) => {
* console.log('飞行完毕')
* },
* pose: pose,
* time: 2000,
* });
* @param digitalTwin - <p>孪生体/孪生体集合/ThingJS查询表达式</p>
* @param [config = {}] - <p>飞行指定配置</p>
* @param [config.keepLevel = false] - <p>是否保持当前层级</p>
* @param [config.complete] - <p>摄像机飞行完成回调函数</p>
* @param [config.time] - <p>摄像机飞行时间,不传的话会根据摄像机姿势和孪生体对象计算一个最佳的飞行时间</p>
* @param [config.pose] - <p>摄像机姿势,不传的话会计算最佳的摄像机姿势</p>
*/
function flyTo(digitalTwin: THING.BaseObject | THING.BaseObject[] | string, config?: {
keepLevel?: boolean;
complete?: (...params: any[]) => any;
time?: number;
pose?: THINGX.Camera.Pose;
}): void;
/**
* <p>通过孪生体获取摄像机姿势</p>
* @example
* const currentLevel = THINGX.App.currentLevel;
* THINGX.Camera.getPoseWithDigitalTwin(currentLevel, {
* x: 30, y: 60, z: 1, tx: 0, ty: 0, tr: 0
* });
* @param digitalTwin - <p>孪生体</p>
* @param [config = {}] - <p>飞到对象的参数,当digitalTwin为单个孪生体且opts.keepDir不为true时生效</p>
* @param [config.x = 30] - <p>position yaw 摄像机位置沿x轴旋转角度</p>
* @param [config.y = 45] - <p>position pitch 摄像机位置沿y轴旋转角度</p>
* @param [config.z = 2] - <p>position radius factor 摄像机位置距离孪生体包围盒半径倍数,1是刚好看到飞到物体的整个包围盒</p>
* @param [config.tx = 0] - <p>target yaw 摄像机看点沿x轴旋转角度</p>
* @param [config.ty = 0] - <p>target pitch 摄像机看点沿y轴旋转角度</p>
* @param [config.tr = 0] - <p>target radius factor 摄像机看点距离孪生体包围中心距离</p>
* @param opts - <p>计算设置</p>
* @param [opts.isRecursive = false] - <p>是否遍历子对象</p>
* @param [opts.isForceReCalc = true] - <p>是否强制重新计算</p>
*/
function getPoseWithDigitalTwin(digitalTwin: THING.BaseObject, config?: {
x?: number;
y?: number;
z?: number;
tx?: number;
ty?: number;
tr?: number;
}, opts: {
isRecursive?: boolean;
isForceReCalc?: boolean;
}): THINGX.Camera.Pose | null;
/**
* <p>通过孪生体集合获取摄像机姿势</p>
* @example
* let dir = THING.Math.scaleVector(THING.App.current.camera.direction, -1); // 默认方向向量
* dir[0] += 1;
* let pose = THINGX.Camera.getPoseWithDigitalTwinSet(THINGX.CONST.DEFAULT_DIGITAL_TWIN_CLASS.BUILDING, {
* useDir: dir,
* radiusScale: 1.5,
* });
* @param digitalTwin - <p>孪生体集合/ThingJS查询表达式</p>
* @param [opts.isRecursive = false] - <p>是否遍历子对象</p>
* @param [opts.radiusScale = 1] - <p>距离包围盒半径倍数,digitalTwin为孪生体集合时生效</p>
* @param [opts.useDir = THING.App.current.camera.direction*-1] - <p>摄像机朝向,digitalTwin为孪生体集合时生效</p>
*/
function getPoseWithDigitalTwinSet(digitalTwin: THING.BaseObject[] | string, opts: {
isRecursive?: boolean;
radiusScale?: number;
useDir?: number[];
}): THINGX.Camera.Pose | null;
/**
* <p>获取摄像机姿势 建议使用getPoseWithDigitalTwin和getPoseWithDigitalTwinSet获取摄像机姿势</p>
* @param digitalTwin - <p>孪生体/孪生体集合/ThingJS查询表达式</p>
* @param [flyToConfig = {}] - <p>飞到对象的参数,当digitalTwin为单个孪生体且opts.keepDir不为true时生效</p>
* @param [flyToConfig.x = 30] - <p>position yaw 摄像机位置沿x轴旋转角度</p>
* @param [flyToConfig.y = 45] - <p>position pitch 摄像机位置沿y轴旋转角度</p>
* @param [flyToConfig.z = 2] - <p>position radius factor 摄像机位置距离孪生体包围盒半径倍数,1是刚好看到飞到物体的整个包围盒</p>
* @param [flyToConfig.tx = 0] - <p>target yaw 摄像机看点沿x轴旋转角度</p>
* @param [flyToConfig.ty = 0] - <p>target pitch 摄像机看点沿y轴旋转角度</p>
* @param [flyToConfig.tr = 0] - <p>target radius factor 摄像机看点距离孪生体包围盒半径倍数</p>
* @param [opts = {}] - <p>飞到最佳视角计算配置</p>
* @param [opts.isForceReCalc = false] - <p>是否强制重新计算,当digitalTwin为单个孪生体生效</p>
* @param [opts.isRecursive = false] - <p>是否遍历子对象</p>
* @param [opts.radiusScale = 1] - <p>距离包围盒半径倍数,digitalTwin为孪生体集合时生效</p>
* @param [opts.keepDir = false] - <p>保持当前朝向</p>
* @param [opts.useDir = THING.App.current.camera.direction*-1] - <p>朝向vector3,digitalTwin为孪生体集合时生效</p>
*/
function getPose(digitalTwin: THING.BaseObject | THING.BaseObject[] | string, flyToConfig?: {
x?: number;
y?: number;
z?: number;
tx?: number;
ty?: number;
tr?: number;
}, opts?: {
isForceReCalc?: boolean;
isRecursive?: boolean;
radiusScale?: number;
keepDir?: boolean;
useDir?: number[];
}): THINGX.Camera.Pose | null;
/**
* <p>获取视点配置</p>
*/
function getConfig(): any;
/**
* @property position - <p>摄相机位置</p>
* @property target - <p>摄像机看点</p>
*/
type Pose = {
position: number[];
target: number[];
};
/**
* <p>飞到最佳视角查看孪生体</p>
* @example
* // 单个孪生体飞行
* const currentLevel = THINGX.App.currentLevel;
* cosnt pose = THINGX.Camera.getPoseWithDigitalTwin(currentLevel, {
* x: 30, y: 60, z: 1, tx: 0, ty: 0, tr: 0
* });
* THINGX.Camera.flyTo(currentLevel, {
* complete: (ev) => {
* console.log('飞行完毕')
* },
* pose: pose,
* time: 2000,
* });
*
* // 孪生体集合飞行
* let dir = THING.Math.scaleVector(THING.App.current.camera.direction, -1); // 默认方向向量
* dir[0] += 1;
* const pose = THINGX.Camera.getPoseWithDigitalTwinSet(THINGX.CONST.DEFAULT_DIGITAL_TWIN_CLASS.BUILDING, {
* useDir: dir,
* radiusScale: 1.5,
* });
* THINGX.Camera.flyTo(THINGX.CONST.DEFAULT_DIGITAL_TWIN_CLASS.BUILDING, {
* complete: (ev) => {
* console.log('飞行完毕')
* },
* pose: pose,
* time: 2000,
* });
* @param digitalTwin - <p>孪生体/孪生体集合/ThingJS查询表达式</p>
* @param [config = {}] - <p>飞行指定配置</p>
* @param [config.keepLevel = false] - <p>是否保持当前层级</p>
* @param [config.complete] - <p>摄像机飞行完成回调函数</p>
* @param [config.time] - <p>摄像机飞行时间,不传的话会根据摄像机姿势和孪生体对象计算一个最佳的飞行时间</p>
* @param [config.pose] - <p>摄像机姿势,不传的话会计算最佳的摄像机姿势</p>
*/
function flyTo(digitalTwin: THING.BaseObject | THING.BaseObject[] | string, config?: {
keepLevel?: boolean;
complete?: (...params: any[]) => any;
time?: number;
pose?: THINGX.Camera.Pose;
}): void;
/**
* <p>通过孪生体获取摄像机姿势</p>
* @example
* const currentLevel = THINGX.App.currentLevel;
* THINGX.Camera.getPoseWithDigitalTwin(currentLevel, {
* x: 30, y: 60, z: 1, tx: 0, ty: 0, tr: 0
* });
* @param digitalTwin - <p>孪生体</p>
* @param [config = {}] - <p>飞到对象的参数,当digitalTwin为单个孪生体且opts.keepDir不为true时生效</p>
* @param [config.x = 30] - <p>position yaw 摄像机位置沿x轴旋转角度</p>
* @param [config.y = 45] - <p>position pitch 摄像机位置沿y轴旋转角度</p>
* @param [config.z = 2] - <p>position radius factor 摄像机位置距离孪生体包围盒半径倍数,1是刚好看到飞到物体的整个包围盒</p>
* @param [config.tx = 0] - <p>target yaw 摄像机看点沿x轴旋转角度</p>
* @param [config.ty = 0] - <p>target pitch 摄像机看点沿y轴旋转角度</p>
* @param [config.tr = 0] - <p>target radius factor 摄像机看点距离孪生体包围中心距离</p>
* @param opts - <p>计算设置</p>
* @param [opts.isRecursive = false] - <p>是否遍历子对象</p>
* @param [opts.isForceReCalc = true] - <p>是否强制重新计算</p>
*/
function getPoseWithDigitalTwin(digitalTwin: THING.BaseObject, config?: {
x?: number;
y?: number;
z?: number;
tx?: number;
ty?: number;
tr?: number;
}, opts: {
isRecursive?: boolean;
isForceReCalc?: boolean;
}): THINGX.Camera.Pose | null;
/**
* <p>通过孪生体集合获取摄像机姿势</p>
* @example
* let dir = THING.Math.scaleVector(THING.App.current.camera.direction, -1); // 默认方向向量
* dir[0] += 1;
* let pose = THINGX.Camera.getPoseWithDigitalTwinSet(THINGX.CONST.DEFAULT_DIGITAL_TWIN_CLASS.BUILDING, {
* useDir: dir,
* radiusScale: 1.5,
* });
* @param digitalTwin - <p>孪生体集合/ThingJS查询表达式</p>
* @param [opts.isRecursive = false] - <p>是否遍历子对象</p>
* @param [opts.radiusScale = 1] - <p>距离包围盒半径倍数,digitalTwin为孪生体集合时生效</p>
* @param [opts.useDir = THING.App.current.camera.direction*-1] - <p>摄像机朝向,digitalTwin为孪生体集合时生效</p>
*/
function getPoseWithDigitalTwinSet(digitalTwin: THING.BaseObject[] | string, opts: {
isRecursive?: boolean;
radiusScale?: number;
useDir?: number[];
}): THINGX.Camera.Pose | null;
/**
* <p>获取摄像机姿势 建议使用getPoseWithDigitalTwin和getPoseWithDigitalTwinSet获取摄像机姿势</p>
* @param digitalTwin - <p>孪生体/孪生体集合/ThingJS查询表达式</p>
* @param [flyToConfig = {}] - <p>飞到对象的参数,当digitalTwin为单个孪生体且opts.keepDir不为true时生效</p>
* @param [flyToConfig.x = 30] - <p>position yaw 摄像机位置沿x轴旋转角度</p>
* @param [flyToConfig.y = 45] - <p>position pitch 摄像机位置沿y轴旋转角度</p>
* @param [flyToConfig.z = 2] - <p>position radius factor 摄像机位置距离孪生体包围盒半径倍数,1是刚好看到飞到物体的整个包围盒</p>
* @param [flyToConfig.tx = 0] - <p>target yaw 摄像机看点沿x轴旋转角度</p>
* @param [flyToConfig.ty = 0] - <p>target pitch 摄像机看点沿y轴旋转角度</p>
* @param [flyToConfig.tr = 0] - <p>target radius factor 摄像机看点距离孪生体包围盒半径倍数</p>
* @param [opts = {}] - <p>飞到最佳视角计算配置</p>
* @param [opts.isForceReCalc = false] - <p>是否强制重新计算,当digitalTwin为单个孪生体生效</p>
* @param [opts.isRecursive = false] - <p>是否遍历子对象</p>
* @param [opts.radiusScale = 1] - <p>距离包围盒半径倍数,digitalTwin为孪生体集合时生效</p>
* @param [opts.keepDir = false] - <p>保持当前朝向</p>
* @param [opts.useDir = THING.App.current.camera.direction*-1] - <p>朝向vector3,digitalTwin为孪生体集合时生效</p>
*/
function getPose(digitalTwin: THING.BaseObject | THING.BaseObject[] | string, flyToConfig?: {
x?: number;
y?: number;
z?: number;
tx?: number;
ty?: number;
tr?: number;
}, opts?: {
isForceReCalc?: boolean;
isRecursive?: boolean;
radiusScale?: number;
keepDir?: boolean;
useDir?: number[];
}): THINGX.Camera.Pose | null;
/**
* <p>获取视点配置</p>
*/
function getConfig(): any;
}
namespace CONST {
/**
* <p>默认孪生体分类</p>
*/
enum DEFAULT_DIGITAL_TWIN_CLASS {
/**
* <p>园区</p>
*/
CAMPUS = ".Campus",
/**
* <p>建筑</p>
*/
BUILDING = ".Building",
/**
* <p>楼层</p>
*/
FLOOR = ".Floor",
/**
* <p>房间</p>
*/
ROOM = ".Room",
/**
* <p>地图</p>
*/
GEO_CAMPUS = ".GeoCampus"
}
/**
* <p>插件类型</p>
*/
enum PLUGIN_TYPE {
/**
* <p>操作原子插件</p>
*/
ACTION = "action",
/**
* <p>图表</p>
*/
CHART = "chart",
/**
* <p>核心插件</p>
*/
CORE = "core",
/**
* <p>扩展插件</p>
*/
EXPAND = "expand",
/**
* <p>效果模版</p>
*/
THEME = "theme"
}
/**
* <p>加载javascript脚本类型</p>
*/
enum JS_LOAD_TYPE {
/**
* <p>通过script标签加载</p>
*/
TAG = "tag",
/**
* <p>以动态执行加载的脚本内容方式加载</p>
*/
EXEC = "exec"
}
/**
* <p>javascript资源类型</p>
*/
enum JS_SRC_TYPE {
/**
* <p>url路径方式</p>
*/
URL = "url",
/**
* <p>源脚本方式</p>
*/
CONTENT = "content"
}
/**
* <p>默认孪生体分类</p>
*/
enum DEFAULT_DIGITAL_TWIN_CLASS {
/**
* <p>园区</p>
*/
CAMPUS = ".Campus",
/**
* <p>建筑</p>
*/
BUILDING = ".Building",
/**
* <p>楼层</p>
*/
FLOOR = ".Floor",
/**
* <p>房间</p>
*/
ROOM = ".Room",
/**
* <p>地图</p>
*/
GEO_CAMPUS = ".GeoCampus"
}
/**
* <p>插件类型</p>
*/
enum PLUGIN_TYPE {
/**
* <p>操作原子插件</p>
*/
ACTION = "action",
/**
* <p>图表</p>
*/
CHART = "chart",
/**
* <p>核心插件</p>
*/
CORE = "core",
/**
* <p>扩展插件</p>
*/
EXPAND = "expand",
/**
* <p>效果模版</p>
*/
THEME = "theme"
}
/**
* <p>加载javascript脚本类型</p>
*/
enum JS_LOAD_TYPE {
/**
* <p>通过script标签加载</p>
*/
TAG = "tag",
/**
* <p>以动态执行加载的脚本内容方式加载</p>
*/
EXEC = "exec"
}
/**
* <p>javascript资源类型</p>
*/
enum JS_SRC_TYPE {
/**
* <p>url路径方式</p>
*/
URL = "url",
/**
* <p>源脚本方式</p>
*/
CONTENT = "content"
}
}
/**
* <p>数据辅助模块</p>
*/
namespace DataHelper {
/**
* <p>数组模块</p>
*/
namespace Array {
/**
* <p>在数组末尾追加元素</p>
* @param array - <p>目标数组</p>
* @param val - <p>待增加的元素</p>
* @param [isForce = false] - <p>是否强制增加,强制则不判断数组中是否已经存在</p>
* @returns <ul>
* <li>增加元素或已存在元素的索引</li>
* </ul>
*/
function push(array: any[], val: any, isForce?: boolean): number;
/**
* <p>根据索引数组删除数组元素</p>
* @param array - <p>数组</p>
* @param indexArray - <p>序列数组</p>
*/
function removeWithIndexArray(array: any[], indexArray: number[]): any[];
/**
* <p>在数组中去除重复项,稳定的(保留第一个)</p>
* @param array - <p>原始数组</p>
* @returns <ul>
* <li>删除了重复项的数组</li>
* </ul>
*/
function unique(array: any[]): any[];
/**
* <p>根据keys值,构造新数组只包含keys中包含的key</p>
* @param array - <p>源数组</p>
* @param keys - <p>要取的键值数组</p>
* @param [isAllowNull = false] - <p>是否允许值为空,默认不允许</p>
* @returns <p>[{key1:XX,key2:XX},{key1:XX,key2:XX}]</p>
*/
function getWithKeys(array: any[], keys: string[], isAllowNull?: boolean): any[];
/**
* <p>删除数组中array1中存在与数值array2中相同的元素</p>
* @param array1 - <p>原始数组</p>
* @param array2 - <p>校样数组</p>
* @returns <p>返回新数组</p>
*/
function subtract(array1: any[], array2: any[]): any[];
/**
* <p>在数组末尾追加元素</p>
* @param array - <p>目标数组</p>
* @param val - <p>待增加的元素</p>
* @param [isForce = false] - <p>是否强制增加,强制则不判断数组中是否已经存在</p>
* @returns <ul>
* <li>增加元素或已存在元素的索引</li>
* </ul>
*/
function push(array: any[], val: any, isForce?: boolean): number;
/**
* <p>根据索引数组删除数组元素</p>
* @param array - <p>数组</p>
* @param indexArray - <p>序列数组</p>
*/
function removeWithIndexArray(array: any[], indexArray: number[]): any[];
/**
* <p>在数组中去除重复项,稳定的(保留第一个)</p>
* @param array - <p>原始数组</p>
* @returns <ul>
* <li>删除了重复项的数组</li>
* </ul>
*/
function unique(array: any[]): any[];
/**
* <p>根据keys值,构造新数组只包含keys中包含的key</p>
* @param array - <p>源数组</p>
* @param keys - <p>要取的键值数组</p>
* @param [isAllowNull = false] - <p>是否允许值为空,默认不允许</p>
* @returns <p>[{key1:XX,key2:XX},{key1:XX,key2:XX}]</p>
*/
function getWithKeys(array: any[], keys: string[], isAllowNull?: boolean): any[];
/**
* <p>删除数组中array1中存在与数值array2中相同的元素</p>
* @param array1 - <p>原始数组</p>
* @param array2 - <p>校样数组</p>
* @returns <p>返回新数组</p>
*/
function subtract(array1: any[], array2: any[]): any[];
}
/**
* <p>对象模块</p>
*/
namespace Object {
/**
* <p>合并两个对象</p>
* @param srcObj - <p>源对象</p>
* @param destObj - <p>目标对象</p>
* @param [isDeep = true] - <p>是否深拷贝</p>
* @param [isNew = false] - <p>是否返回新对象,否则影响源对象</p>
* @returns <ul>
* <li>合并后的对象</li>
* </ul>
*/
function merge(srcObj: any, destObj: any, isDeep?: boolean, isNew?: boolean): any;
/**
* <p>拷贝对象</p>
* @example
* const myclone = THINGX.Utils.clone(obj);
* @param obj - <p>需要被拷贝的对象</p>
* @param [isDeep = true] - <p>是否深拷贝</p>
* @param [endCheck = () => {return false;}] - <p>停止拷贝的条件函数</p>
*/
function clone(obj: any, isDeep?: boolean, endCheck?: (...params: any[]) => any): any;
/**
* <p>获取对象第一个key</p>
* @param obj - <p>对象</p>
*/
function getFirstKey(obj: any): any;
/**
* <p>获取对象第一个值</p>
* @param obj - <p>对象</p>
*/
function getFirstValue(obj: any): any;
/**
* <p>对象是否为空</p>
* @param obj - <p>对象</p>
*/
function isEmpty(obj: any): boolean;
/**
* <p>从obj1中删除obj2中已有的元素</p>
* @param obj1 - <p>对象1</p>
* @param obj2 - <p>对象2</p>
* @param [isCheckVal = false] - <p>是否对比元素值一样</p>
* @returns <ul>
* <li>新对象,obj1的子集</li>
* </ul>
*/
function subtract(obj1: any, obj2: any, isCheckVal?: boolean): any;
/**
* <p>合并两个对象</p>
* @param srcObj - <p>源对象</p>
* @param destObj - <p>目标对象</p>
* @param [isDeep = true] - <p>是否深拷贝</p>
* @param [isNew = false] - <p>是否返回新对象,否则影响源对象</p>
* @returns <ul>
* <li>合并后的对象</li>
* </ul>
*/
function merge(srcObj: any, destObj: any, isDeep?: boolean, isNew?: boolean): any;
/**
* <p>拷贝对象</p>
* @example
* const myclone = THINGX.Utils.clone(obj);
* @param obj - <p>需要被拷贝的对象</p>
* @param [isDeep = true] - <p>是否深拷贝</p>
* @param [endCheck = () => {return false;}] - <p>停止拷贝的条件函数</p>
*/
function clone(obj: any, isDeep?: boolean, endCheck?: (...params: any[]) => any): any;
/**
* <p>获取对象第一个key</p>
* @param obj - <p>对象</p>
*/
function getFirstKey(obj: any): any;
/**
* <p>获取对象第一个值</p>
* @param obj - <p>对象</p>
*/
function getFirstValue(obj: any): any;
/**
* <p>对象是否为空</p>
* @param obj - <p>对象</p>
*/
function isEmpty(obj: any): boolean;
/**
* <p>从obj1中删除obj2中已有的元素</p>
* @param obj1 - <p>对象1</p>
* @param obj2 - <p>对象2</p>
* @param [isCheckVal = false] - <p>是否对比元素值一样</p>
* @returns <ul>
* <li>新对象,obj1的子集</li>
* </ul>
*/
function subtract(obj1: any, obj2: any, isCheckVal?: boolean): any;
}
/**
* <p>字符串模块</p>
*/
namespace String { }
/**
* <p>字符串模块</p>
*/
namespace Time {
/**
* <p>延时某段时间,只执行最后一次
* 类似于requestAnimationFrame</p>
* @param fn - <p>执行函数</p>
*/
function delay(fn: any, _a: any): void;
/**
* <p>延时某段时间,只执行最后一次
* 类似于requestAnimationFrame</p>
* @param fn - <p>执行函数</p>
*/
function delay(fn: any, _a: any): void;
}
/**
* <p>vector3向量模块</p>
*/
namespace Vector {
/**
* <p>两个向量加</p>
* @param vec1 - <p>向量1</p>
* @param vec2 - <p>向量2</p>
*/
function add(vec1: number[], vec2: number[]): number[];
/**
* <p>向量与数值相乘</p>
* @param vec - <p>向量</p>
* @param num - <p>数值</p>
*/
function multiplyNumber(vec: number[], num: number): number[];
/**
* <p>两个向量相减, vec1 - vec2</p>
* @param vec1 - <p>向量1</p>
* @param vec2 - <p>向量2</p>
*/
function subtract(vec1: number[], vec2: number[]): number[];
/**
* <p>向量标准化</p>
* @param vec - <p>向量</p>
*/
function normalize(vec: number[]): number[];
/**
* <p>获取向量长度</p>
* @param vec - <p>向量</p>
*/
function length(vec: number[]): number;
/**
* <p>获取两个向量之间的距离</p>
* @param vec1 - <p>向量1</p>
* @param vec2 - <p>向量2</p>
*/
function distance(vec1: number[], vec2: number[]): number;
/**
* <p>两个向量加</p>
* @param vec1 - <p>向量1</p>
* @param vec2 - <p>向量2</p>
*/
function add(vec1: number[], vec2: number[]): number[];
/**
* <p>向量与数值相乘</p>
* @param vec - <p>向量</p>
* @param num - <p>数值</p>
*/
function multiplyNumber(vec: number[], num: number): number[];
/**
* <p>两个向量相减, vec1 - vec2</p>
* @param vec1 - <p>向量1</p>
* @param vec2 - <p>向量2</p>
*/
function subtract(vec1: number[], vec2: number[]): number[];
/**
* <p>向量标准化</p>
* @param vec - <p>向量</p>
*/
function normalize(vec: number[]): number[];
/**
* <p>获取向量长度</p>
* @param vec - <p>向量</p>
*/
function length(vec: number[]): number;
/**
* <p>获取两个向量之间的距离</p>
* @param vec1 - <p>向量1</p>
* @param vec2 - <p>向量2</p>
*/
function distance(vec1: number[], vec2: number[]): number;
}
/**
* <p>数组模块</p>
*/
namespace Array {
/**
* <p>在数组末尾追加元素</p>
* @param array - <p>目标数组</p>
* @param val - <p>待增加的元素</p>
* @param [isForce = false] - <p>是否强制增加,强制则不判断数组中是否已经存在</p>
* @returns <ul>
* <li>增加元素或已存在元素的索引</li>
* </ul>
*/
function push(array: any[], val: any, isForce?: boolean): number;
/**
* <p>根据索引数组删除数组元素</p>
* @param array - <p>数组</p>
* @param indexArray - <p>序列数组</p>
*/
function removeWithIndexArray(array: any[], indexArray: number[]): any[];
/**
* <p>在数组中去除重复项,稳定的(保留第一个)</p>
* @param array - <p>原始数组</p>
* @returns <ul>
* <li>删除了重复项的数组</li>
* </ul>
*/
function unique(array: any[]): any[];
/**
* <p>根据keys值,构造新数组只包含keys中包含的key</p>
* @param array - <p>源数组</p>
* @param keys - <p>要取的键值数组</p>
* @param [isAllowNull = false] - <p>是否允许值为空,默认不允许</p>
* @returns <p>[{key1:XX,key2:XX},{key1:XX,key2:XX}]</p>
*/
function getWithKeys(array: any[], keys: string[], isAllowNull?: boolean): any[];
/**
* <p>删除数组中array1中存在与数值array2中相同的元素</p>
* @param array1 - <p>原始数组</p>
* @param array2 - <p>校样数组</p>
* @returns <p>返回新数组</p>
*/
function subtract(array1: any[], array2: any[]): any[];
/**
* <p>在数组末尾追加元素</p>
* @param array - <p>目标数组</p>
* @param val - <p>待增加的元素</p>
* @param [isForce = false] - <p>是否强制增加,强制则不判断数组中是否已经存在</p>
* @returns <ul>
* <li>增加元素或已存在元素的索引</li>
* </ul>
*/
function push(array: any[], val: any, isForce?: boolean): number;
/**
* <p>根据索引数组删除数组元素</p>
* @param array - <p>数组</p>
* @param indexArray - <p>序列数组</p>
*/
function removeWithIndexArray(array: any[], indexArray: number[]): any[];
/**
* <p>在数组中去除重复项,稳定的(保留第一个)</p>
* @param array - <p>原始数组</p>
* @returns <ul>
* <li>删除了重