合入 #362, #363 by @LastLeaf。这两个 Pull Request 对 Component, Behavior 及 Page 的进行了一些改动:
Component, Behavior 及 Page 的返回值中交叉一个实际并不存在的 Branded Type,携带 data, properties 及 methods 的类型信息,用以支持 glass-easel-analyzer 的组件类型分析;properties 的类型推导方式,使其类似 glass-easel,相比原有的推导方式,能更准确地保留 property 的 value 的类型这是一个 破坏性改动,从低于 5.0.0 的版本升级时,可能需要进行一些适配:
Component 和 Behavior 的泛型 TProperty 的定义有一些改变,如果之前的代码中以 FullProperty 形式手动指定了这个泛型,可能需要为 FullProperty 添加 value 的具体类型;WechatMiniprogram.Behavior.BehaviorIdentifier 更名为 WechatMiniprogram.Behavior.Identifier;Component(), Behavior() 和 Page() 的返回值类型都有对应的改变,在实际类型上增加了一个 Branded Type。对于这几个函数的返回值类型:
Behavior 的返回类型可以使用新增加的 WechatMiniprogram.Behavior.Identifier 来表达;Component 的返回类型可以使用新增加的 WechatMiniprogram.Component.Identifier 来表达;Page 需要留意实际返回值应为 void (undefined),必要时也可以使用新增加的 WechatMiniprogram.Page.VoidReturnType;this.data 和 this.property 的推导类型可能会有所变化,需要根据推导类型进行相应改动。Platform 枚举值更新测试用例getOpenerEventChannel 的返回值的类型,使其有可能返回空对象,以正确反映实际情况。这是一个 破坏性改动,getOpenerEventChannel 的返回值上的 emit, on 等方法不再可以直接调用 (#350)setTimeout 和 setInterval 的参数 (#323)CollectionReference 上的 aggregate (#276)setInitialRenderingCache 和 getAppBar by @Yang Mingshan (#339)RaycastHit (#337)合入 #332, #333, #334 by @lvzl。这几个 Pull Request 对 Component 和 Behavior 的实现进行了较大改动,以支持:
Array 和 Object 类型的 property 和 data,以值的实际类型作为泛型推导的结果,而非固定推导为 any[] 和 Record<string, any>;BehaviorIdentifier 的类型,通过为其交叉一个带有 Behavior 定义信息的虚假类型,使 Component 和 Behavior 能自动推导其使用到的 Behavior 的 data, properties 及 methods;这是一个比较大的 破坏性改动,从低于 4.0.0 的版本升级时,可能需要进行一些适配:
Component 和 Behavior 的第四个泛型现在是新的 TBehavior,如果之前的代码中有为这两个函数手动指定泛型的用例,需要手动添加这个泛型;Behavior() 的返回值不再是 string(或者说不完全是),之前使用 string 接受 Behavior() 返回值的实现需要修改为 WechatMiniprogram.Behavior.BehaviorIdentifier;this.data 和 this.property 的推导类型可能会有所变化,需要根据推导类型进行相应改动。getPassiveEvent, setPassiveEvent 方法App 生命周期 onLaunch, onShow 参数中的 referrerInfo 字段类型对齐 API 定义中的 ReferrerInfo。这是一个 破坏性改动,其中 extraData 的类型从 any 收窄到了 Record<string, any>LaunchOptions 中 query 字段的类型。这是一个 破坏性改动,该类型从 Record<string, any> 收窄到了 Record<string, string>WXWebAssembly 定义onShareAppMessage 异步形式的定义错误WechatXrFrame 改为 XrFrame。这是一个 破坏性改动Component.triggerEvent 的 detail 类型MethodOption 以解决 #161(鸣谢:@Lienviws)virtualHost (#174)requirePlugin 和 requireMiniProgramno-unnecessary-qualifier)@deprecated 标识ICustomTimelineContent 的 query 的类型Component 的第五个泛型参数,用于将自定义组件作为页面根组件使用的情况off)的参数不为可选值的问题Component 构造器增加第四个泛型,以允许在自定义组件上挂载自定义的字段 (#133)App 的 onThemeChange (#135)Page 的 onAddToFavorites (#136)FileSystemManagerGetFileInfoCompleteCallback 和 WxGetFileInfoCompleteCallback 都变成了 GetFileInfoCompleteCallback)。这是一个 破坏性改动,原本字面上引用了这些 interface / callback 的代码可能会报错。Component 的 getOpenerEventChannel (#112 by @baranwang)const 改为 let) (#102)Page 上的 options 字段 (#101 by @baranwang)Component selectOwnerComponent, animate, clearAnimation (#96)App onUnhandledRejection (#99)Component 纯数据字段 (pureDataPattern)Component 的属性监听器使用 string 类型Behaviors 中缺少的一些选项Partial 的自定义方法 (用例)getApp 支持范型 (#77)require, exports, module.exports 定义,以支持在没有 @types/node 下编译FileSystemManager.appendFileSync 的 encoding)[object Object] 的问题object 改为 Record<string, any>,以允许任意属性和方法ObjectConstructor 时,类型推导为 Record<string, any> 而不是 objectcomponent 参数的类型为页面或自定义组件实例console: WechatMiniprogram.Console 全局变量styleIsolation 到 ComponentOptionIAnyObject,收回到命名空间 WechatMiniprogram 内