UNPKG

@types/wechat-miniprogram

Version:
614 lines (600 loc) 29.6 kB
declare namespace WechatMiniprogram.Component { type Instance< TData extends DataOption, TProperty extends PropertyOption, TMethod extends Partial<MethodOption>, TCustomInstanceProperty extends IAnyObject = {}, TIsPage extends boolean = false, > = & InstanceProperties & InstanceMethods<TData> & TMethod & (TIsPage extends true ? Page.ILifetime : {}) & TCustomInstanceProperty & { /** 组件数据,**包括内部数据和属性值** */ data: TData & PropertyOptionToData<TProperty>; /** 组件数据,**包括内部数据和属性值**(与 `data` 一致) */ properties: TData & PropertyOptionToData<TProperty>; }; type TrivialInstance = Instance< IAnyObject, IAnyObject, IAnyObject, IAnyObject >; type TrivialOption = Options<IAnyObject, IAnyObject, IAnyObject, IAnyObject>; type Options< TData extends DataOption, TProperty extends PropertyOption, TMethod extends MethodOption, TCustomInstanceProperty extends IAnyObject = {}, TIsPage extends boolean = false, > = & Partial<Data<TData>> & Partial<Property<TProperty>> & Partial<Method<TMethod, TIsPage>> & Partial<OtherOption> & Partial<Lifetimes> & ThisType< Instance< TData, TProperty, TMethod, TCustomInstanceProperty, TIsPage > >; interface Constructor { < TData extends DataOption, TProperty extends PropertyOption, TMethod extends MethodOption, TCustomInstanceProperty extends IAnyObject = {}, TIsPage extends boolean = false, >( options: Options< TData, TProperty, TMethod, TCustomInstanceProperty, TIsPage >, ): string; } type DataOption = Record<string, any>; type PropertyOption = Record<string, AllProperty>; // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type type MethodOption = Record<string, Function>; interface Data<D extends DataOption> { /** 组件的内部数据,和 `properties` 一同用于组件的模板渲染 */ data?: D | undefined; } interface Property<P extends PropertyOption> { /** 组件的对外属性,是属性名到属性设置的映射表 */ properties: P; } interface Method<M extends MethodOption, TIsPage extends boolean = false> { /** 组件的方法,包括事件响应函数和任意的自定义方法,关于事件响应函数的使用,参见 [组件间通信与事件](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/events.html) */ methods: M & (TIsPage extends true ? Partial<Page.ILifetime> : {}); } type PropertyType = | StringConstructor | NumberConstructor | BooleanConstructor | ArrayConstructor | ObjectConstructor | null; type ValueType<T extends PropertyType> = T extends null ? any : T extends StringConstructor ? string : T extends NumberConstructor ? number : T extends BooleanConstructor ? boolean : T extends ArrayConstructor ? any[] : T extends ObjectConstructor ? IAnyObject : never; type FullProperty<T extends PropertyType> = { /** 属性类型 */ type: T; /** 属性初始值 */ value?: ValueType<T> | undefined; /** 属性值被更改时的响应函数 */ observer?: | string | (( newVal: ValueType<T>, oldVal: ValueType<T>, changedPath: Array<string | number>, ) => void) | undefined; /** 属性的类型(可以指定多个) */ optionalTypes?: ShortProperty[] | undefined; }; type AllFullProperty = | FullProperty<StringConstructor> | FullProperty<NumberConstructor> | FullProperty<BooleanConstructor> | FullProperty<ArrayConstructor> | FullProperty<ObjectConstructor> | FullProperty<null>; type ShortProperty = | StringConstructor | NumberConstructor | BooleanConstructor | ArrayConstructor | ObjectConstructor | null; type AllProperty = AllFullProperty | ShortProperty; type PropertyToData<T extends AllProperty> = T extends ShortProperty ? ValueType<T> : FullPropertyToData<Exclude<T, ShortProperty>>; type FullPropertyToData<T extends AllFullProperty> = ValueType<T["type"]>; type PropertyOptionToData<P extends PropertyOption> = { [name in keyof P]: PropertyToData<P[name]>; }; interface InstanceProperties { /** 组件的文件路径 */ is: string; /** 节点id */ id: string; /** 节点dataset */ dataset: Record<string, string>; } interface InstanceMethods<D extends DataOption> { /** `setData` 函数用于将数据从逻辑层发送到视图层 * (异步),同时改变对应的 `this.data` 的值(同步)。 * * **注意:** * * 1. **直接修改 this.data 而不调用 this.setData 是无法改变页面的状态的,还会造成数据不一致**。 * 1. 仅支持设置可 JSON 化的数据。 * 1. 单次设置的数据不能超过1024kB,请尽量避免一次设置过多的数据。 * 1. 请不要把 data 中任何一项的 value 设为 `undefined` ,否则这一项将不被设置并可能遗留一些潜在问题。 */ setData( /** 这次要改变的数据 * * 以 `key: value` 的形式表示,将 `this.data` 中的 `key` 对应的值改变成 `value`。 * * 其中 `key` 可以以数据路径的形式给出,支持改变数组中的某一项或对象的某个属性,如 `array[2].message``a.b.c.d`,并且不需要在 this.data 中预先定义。 */ data: Partial<D> & IAnyObject, /** setData引起的界面更新渲染完毕后的回调函数,最低基础库: `1.5.0` */ callback?: () => void, ): void; /** 检查组件是否具有 `behavior` (检查时会递归检查被直接或间接引入的所有behavior) */ hasBehavior(behavior: Behavior.BehaviorIdentifier): void; /** 触发事件,参见组件事件 */ triggerEvent<DetailType = any>( name: string, detail?: DetailType, options?: TriggerEventOption, ): void; /** 创建一个 SelectorQuery 对象,选择器选取范围为这个组件实例内 */ createSelectorQuery(): SelectorQuery; /** 创建一个 IntersectionObserver 对象,选择器选取范围为这个组件实例内 */ createIntersectionObserver( options: CreateIntersectionObserverOption, ): IntersectionObserver; /** 使用选择器选择组件实例节点,返回匹配到的第一个组件实例对象(会被 `wx://component-export` 影响) */ selectComponent(selector: string): TrivialInstance; /** 使用选择器选择组件实例节点,返回匹配到的全部组件实例对象组成的数组 */ selectAllComponents(selector: string): TrivialInstance[]; /** * 选取当前组件节点所在的组件实例(即组件的引用者),返回它的组件实例对象(会被 `wx://component-export` 影响) * * 最低基础库版本:[`2.8.2`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */ selectOwnerComponent(): TrivialInstance; /** 获取这个关系所对应的所有关联节点,参见 组件间关系 */ getRelationNodes(relationKey: string): TrivialInstance[]; /** * 立刻执行 callback ,其中的多个 setData 之间不会触发界面绘制(只有某些特殊场景中需要,如用于在不同组件同时 setData 时进行界面绘制同步) * * 最低基础库版本:[`2.4.0`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */ groupSetData(callback?: () => void): void; /** * 返回当前页面的 custom-tab-bar 的组件实例 * * 最低基础库版本:[`2.6.2`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */ getTabBar(): TrivialInstance; /** * 返回页面标识符(一个字符串),可以用来判断几个自定义组件实例是不是在同一个页面内 * * 最低基础库版本:[`2.7.1`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */ getPageId(): string; /** * 执行关键帧动画,详见[动画](https://developers.weixin.qq.com/miniprogram/dev/framework/view/animation.html) * * 最低基础库版本:[`2.9.0`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */ animate( selector: string, keyFrames: KeyFrame[], duration: number, callback?: () => void, ): void; /** * 执行关键帧动画,详见[动画](https://developers.weixin.qq.com/miniprogram/dev/framework/view/animation.html) * * 最低基础库版本:[`2.9.0`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */ animate( selector: string, keyFrames: ScrollTimelineKeyframe[], duration: number, scrollTimeline: ScrollTimelineOption, ): void; /** * 清除关键帧动画,详见[动画](https://developers.weixin.qq.com/miniprogram/dev/framework/view/animation.html) * * 最低基础库版本:[`2.9.0`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */ clearAnimation(selector: string, callback: () => void): void; /** * 清除关键帧动画,详见[动画](https://developers.weixin.qq.com/miniprogram/dev/framework/view/animation.html) * * 最低基础库版本:[`2.9.0`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */ clearAnimation( selector: string, options?: ClearAnimationOptions, callback?: () => void, ): void; getOpenerEventChannel(): EventChannel; } interface ComponentOptions { /** * [启用多slot支持](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/wxml-wxss.html#组件wxml的slot) */ multipleSlots?: boolean | undefined; /** * [组件样式隔离](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/wxml-wxss.html#组件样式隔离) */ addGlobalClass?: boolean | undefined; /** * [组件样式隔离](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/wxml-wxss.html#组件样式隔离) */ styleIsolation?: | "isolated" | "apply-shared" | "shared" | "page-isolated" | "page-apply-shared" | "page-shared" | undefined; /** * [纯数据字段](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/pure-data.html) 是一些不用于界面渲染的 data 字段,可以用于提升页面更新性能。从小程序基础库版本 2.8.2 开始支持。 */ pureDataPattern?: RegExp | undefined; /** * [虚拟化组件节点](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/wxml-wxss.html#%E8%99%9A%E6%8B%9F%E5%8C%96%E7%BB%84%E4%BB%B6%E8%8A%82%E7%82%B9) 使自定义组件内部的第一层节点由自定义组件本身完全决定。从小程序基础库版本 [`2.11.2`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 开始支持 */ virtualHost?: boolean | undefined; } interface TriggerEventOption { /** 事件是否冒泡 * * 默认值: `false` */ bubbles?: boolean | undefined; /** 事件是否可以穿越组件边界,为false时,事件将只能在引用组件的节点树上触发,不进入其他任何组件内部 * * 默认值: `false` */ composed?: boolean | undefined; /** 事件是否拥有捕获阶段 * * 默认值: `false` */ capturePhase?: boolean | undefined; } interface RelationOption { /** 目标组件的相对关系 */ type: "parent" | "child" | "ancestor" | "descendant"; /** 关系生命周期函数,当关系被建立在页面节点树中时触发,触发时机在组件attached生命周期之后 */ linked?(target: TrivialInstance): void; /** 关系生命周期函数,当关系在页面节点树中发生改变时触发,触发时机在组件moved生命周期之后 */ linkChanged?(target: TrivialInstance): void; /** 关系生命周期函数,当关系脱离页面节点树时触发,触发时机在组件detached生命周期之后 */ unlinked?(target: TrivialInstance): void; /** 如果这一项被设置,则它表示关联的目标节点所应具有的behavior,所有拥有这一behavior的组件节点都会被关联 */ target?: string | undefined; } interface PageLifetimes { /** 页面生命周期回调—监听页面显示 * * 页面显示/切入前台时触发。 */ show(): void; /** 页面生命周期回调—监听页面隐藏 * * 页面隐藏/切入后台时触发。 如 `navigateTo` 或底部 `tab` 切换到其他页面,小程序切入后台等。 */ hide(): void; /** 页面生命周期回调—监听页面尺寸变化 * * 所在页面尺寸变化时执行 */ resize(size: Page.IResizeOption): void; } type DefinitionFilter = <T extends TrivialOption>( /** 使用该 behavior 的 component/behavior 的定义对象 */ defFields: T, /** 该 behavior 所使用的 behavior 的 definitionFilter 函数列表 */ definitionFilterArr?: DefinitionFilter[], ) => void; interface Lifetimes { /** 组件生命周期声明对象,组件的生命周期:`created``attached``ready``moved``detached` 将收归到 `lifetimes` 字段内进行声明,原有声明方式仍旧有效,如同时存在两种声明方式,则 `lifetimes` 字段内声明方式优先级最高 * * 最低基础库: `2.2.3` */ lifetimes: Partial<{ /** * 在组件实例刚刚被创建时执行,注意此时不能调用 `setData` * * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */ created(): void; /** * 在组件实例进入页面节点树时执行 * * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */ attached(): void; /** * 在组件在视图层布局完成后执行 * * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */ ready(): void; /** * 在组件实例被移动到节点树另一个位置时执行 * * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */ moved(): void; /** * 在组件实例被从页面节点树移除时执行 * * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */ detached(): void; /** * 每当组件方法抛出错误时执行 * * 最低基础库版本:[`2.4.1`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */ error(err: Error): void; }>; /** * @deprecated 旧式的定义方式,基础库 `2.2.3` 起请在 lifetimes 中定义 * * 在组件实例刚刚被创建时执行 * * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */ created(): void; /** * @deprecated 旧式的定义方式,基础库 `2.2.3` 起请在 lifetimes 中定义 * * 在组件实例进入页面节点树时执行 * * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */ attached(): void; /** * @deprecated 旧式的定义方式,基础库 `2.2.3` 起请在 lifetimes 中定义 * * 在组件在视图层布局完成后执行 * * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */ ready(): void; /** * @deprecated 旧式的定义方式,基础库 `2.2.3` 起请在 lifetimes 中定义 * * 在组件实例被移动到节点树另一个位置时执行 * * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */ moved(): void; /** * @deprecated 旧式的定义方式,基础库 `2.2.3` 起请在 lifetimes 中定义 * * 在组件实例被从页面节点树移除时执行 * * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */ detached(): void; /** * @deprecated 旧式的定义方式,基础库 `2.2.3` 起请在 lifetimes 中定义 * * 每当组件方法抛出错误时执行 * * 最低基础库版本:[`2.4.1`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */ error(err: Error): void; } interface OtherOption { /** 类似于mixins和traits的组件间代码复用机制,参见 [behaviors](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/behaviors.html) */ behaviors: Behavior.BehaviorIdentifier[]; /** * 组件数据字段监听器,用于监听 properties 和 data 的变化,参见 [数据监听器](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/observer.html) * * 最低基础库版本:[`2.6.1`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */ observers: Record<string, (...args: any[]) => any>; /** 组件间关系定义,参见 [组件间关系](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/lifetimes.html) */ relations: { [componentName: string]: RelationOption; }; /** 组件接受的外部样式类,参见 [外部样式类](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/wxml-wxss.html) */ externalClasses?: string[] | undefined; /** 组件所在页面的生命周期声明对象,参见 [组件生命周期](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/lifetimes.html) * * 最低基础库版本: [`2.2.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */ pageLifetimes?: Partial<PageLifetimes> | undefined; /** 一些选项(文档中介绍相关特性时会涉及具体的选项设置,这里暂不列举) */ options: ComponentOptions; /** 定义段过滤器,用于自定义组件扩展,参见 [自定义组件扩展](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/extend.html) * * 最低基础库版本: [`2.2.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */ definitionFilter?: DefinitionFilter | undefined; /** * 组件自定义导出,当使用 `behavior: wx://component-export` 时,这个定义段可以用于指定组件被 selectComponent 调用时的返回值,参见 [组件间通信与事件](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/events.html) * 最低基础库版本: [`2.2.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */ export: () => IAnyObject; } interface KeyFrame { /** 关键帧的偏移,范围[0-1] */ offset?: number | undefined; /** 动画缓动函数 */ ease?: string | undefined; /** 基点位置,即 CSS transform-origin */ transformOrigin?: string | undefined; /** 背景颜色,即 CSS background-color */ backgroundColor?: string | undefined; /** 底边位置,即 CSS bottom */ bottom?: number | string | undefined; /** 高度,即 CSS height */ height?: number | string | undefined; /** 左边位置,即 CSS left */ left?: number | string | undefined; /** 宽度,即 CSS width */ width?: number | string | undefined; /** 不透明度,即 CSS opacity */ opacity?: number | string | undefined; /** 右边位置,即 CSS right */ right?: number | string | undefined; /** 顶边位置,即 CSS top */ top?: number | string | undefined; /** 变换矩阵,即 CSS transform matrix */ matrix?: number[] | undefined; /** 三维变换矩阵,即 CSS transform matrix3d */ matrix3d?: number[] | undefined; /** 旋转,即 CSS transform rotate */ rotate?: number | undefined; /** 三维旋转,即 CSS transform rotate3d */ rotate3d?: number[] | undefined; /** X 方向旋转,即 CSS transform rotateX */ rotateX?: number | undefined; /** Y 方向旋转,即 CSS transform rotateY */ rotateY?: number | undefined; /** Z 方向旋转,即 CSS transform rotateZ */ rotateZ?: number | undefined; /** 缩放,即 CSS transform scale */ scale?: number[] | undefined; /** 三维缩放,即 CSS transform scale3d */ scale3d?: number[] | undefined; /** X 方向缩放,即 CSS transform scaleX */ scaleX?: number | undefined; /** Y 方向缩放,即 CSS transform scaleY */ scaleY?: number | undefined; /** Z 方向缩放,即 CSS transform scaleZ */ scaleZ?: number | undefined; /** 倾斜,即 CSS transform skew */ skew?: number[] | undefined; /** X 方向倾斜,即 CSS transform skewX */ skewX?: number | undefined; /** Y 方向倾斜,即 CSS transform skewY */ skewY?: number | undefined; /** 位移,即 CSS transform translate */ translate?: Array<number | string> | undefined; /** 三维位移,即 CSS transform translate3d */ translate3d?: Array<number | string> | undefined; /** X 方向位移,即 CSS transform translateX */ translateX?: number | string | undefined; /** Y 方向位移,即 CSS transform translateY */ translateY?: number | string | undefined; /** Z 方向位移,即 CSS transform translateZ */ translateZ?: number | string | undefined; } interface ClearAnimationOptions { /** 基点位置,即 CSS transform-origin */ transformOrigin?: boolean | undefined; /** 背景颜色,即 CSS background-color */ backgroundColor?: boolean | undefined; /** 底边位置,即 CSS bottom */ bottom?: boolean | undefined; /** 高度,即 CSS height */ height?: boolean | undefined; /** 左边位置,即 CSS left */ left?: boolean | undefined; /** 宽度,即 CSS width */ width?: boolean | undefined; /** 不透明度,即 CSS opacity */ opacity?: boolean | undefined; /** 右边位置,即 CSS right */ right?: boolean | undefined; /** 顶边位置,即 CSS top */ top?: boolean | undefined; /** 变换矩阵,即 CSS transform matrix */ matrix?: boolean | undefined; /** 三维变换矩阵,即 CSS transform matrix3d */ matrix3d?: boolean | undefined; /** 旋转,即 CSS transform rotate */ rotate?: boolean | undefined; /** 三维旋转,即 CSS transform rotate3d */ rotate3d?: boolean | undefined; /** X 方向旋转,即 CSS transform rotateX */ rotateX?: boolean | undefined; /** Y 方向旋转,即 CSS transform rotateY */ rotateY?: boolean | undefined; /** Z 方向旋转,即 CSS transform rotateZ */ rotateZ?: boolean | undefined; /** 缩放,即 CSS transform scale */ scale?: boolean | undefined; /** 三维缩放,即 CSS transform scale3d */ scale3d?: boolean | undefined; /** X 方向缩放,即 CSS transform scaleX */ scaleX?: boolean | undefined; /** Y 方向缩放,即 CSS transform scaleY */ scaleY?: boolean | undefined; /** Z 方向缩放,即 CSS transform scaleZ */ scaleZ?: boolean | undefined; /** 倾斜,即 CSS transform skew */ skew?: boolean | undefined; /** X 方向倾斜,即 CSS transform skewX */ skewX?: boolean | undefined; /** Y 方向倾斜,即 CSS transform skewY */ skewY?: boolean | undefined; /** 位移,即 CSS transform translate */ translate?: boolean | undefined; /** 三维位移,即 CSS transform translate3d */ translate3d?: boolean | undefined; /** X 方向位移,即 CSS transform translateX */ translateX?: boolean | undefined; /** Y 方向位移,即 CSS transform translateY */ translateY?: boolean | undefined; /** Z 方向位移,即 CSS transform translateZ */ translateZ?: boolean | undefined; } interface ScrollTimelineKeyframe { composite?: "replace" | "add" | "accumulate" | "auto" | undefined; easing?: string | undefined; offset?: number | null | undefined; [property: string]: string | number | null | undefined; } interface ScrollTimelineOption { /** 指定滚动元素的选择器(只支持 scroll-view),该元素滚动时会驱动动画的进度 */ scrollSource: string; /** 指定滚动的方向。有效值为 horizontal 或 vertical */ orientation?: string | undefined; /** 指定开始驱动动画进度的滚动偏移量,单位 px */ startScrollOffset: number; /** 指定停止驱动动画进度的滚动偏移量,单位 px */ endScrollOffset: number; /** 起始和结束的滚动范围映射的时间长度,该时间可用于与关键帧动画里的时间 (duration) 相匹配,单位 ms */ timeRange: number; } } /** Component构造器可用于定义组件,调用Component构造器时可以指定组件的属性、数据、方法等。 * * * 使用 `this.data` 可以获取内部数据和属性值,但不要直接修改它们,应使用 `setData` 修改。 * * 生命周期函数无法在组件方法中通过 `this` 访问到。 * * 属性名应避免以 data 开头,即不要命名成 `dataXyz` 这样的形式,因为在 WXML 中, `data-xyz=""` 会被作为节点 dataset 来处理,而不是组件属性。 * * 在一个组件的定义和使用时,组件的属性名和 data 字段相互间都不能冲突(尽管它们位于不同的定义段中)。 * * 从基础库 `2.0.9` 开始,对象类型的属性和 data 字段中可以包含函数类型的子字段,即可以通过对象类型的属性字段来传递函数。低于这一版本的基础库不支持这一特性。 * * `bug` : 对于 type 为 Object 或 Array 的属性,如果通过该组件自身的 `this.setData` 来改变属性值的一个子字段,则依旧会触发属性 observer ,且 observer 接收到的 `newVal` 是变化的那个子字段的值, `oldVal` 为空, `changedPath` 包含子字段的字段名相关信息。 */ declare let Component: WechatMiniprogram.Component.Constructor;