关于小程序 typescript 声明文件的疑惑

2019-03-01 09:23:22 +08:00
 meszyouh

在 lin.wx.app.d.ts 里有如下声明



  interface AppInstance<T extends IAnyObject = {}> {
  /** 生命周期回调—监听小程序初始化
   *
   * 小程序初始化完成时触发,全局只触发一次。
   */
  onLaunch?(options?: ILaunchShowOption): void
  /** 生命周期回调—监听小程序显示
   *
   * 小程序启动,或从后台进入前台显示时
   */
  onShow?(options?: ILaunchShowOption): void
  /** 生命周期回调—监听小程序隐藏
   *
   * 小程序从前台进入后台时
   */
  onHide?(): void
  /** 错误监听函数
   *
   * 小程序发生脚本错误,或者 api
   */
  onError?(/** 错误信息,包含堆栈 */error?: string): void
  /** 页面不存在监听函数
   *
   * 小程序要打开的页面不存在时触发,会带上页面信息回调该函数
   *
   * **注意:**
   * 1. 如果开发者没有添加 `onPageNotFound` 监听,当跳转页面不存在时,将推入微信客户端原生的页面不存在提示页面。
   * 2. 如果 `onPageNotFound` 回调中又重定向到另一个不存在的页面,将推入微信客户端原生的页面不存在提示页面,并且不再回调 `onPageNotFound`。
   *
   * 最低基础库:1.9.90
   */
  onPageNotFound?(options?: IPageNotFoundOption): void
  }
  

为什么这里要用泛型 ? 我看下面并没有用到它啊 ? 还是说有其它特殊语法使用方式 ?

  interface AppConstructor {
    <T extends IAnyObject & AppInstance>(
      options: AppInstance<T> & T
    ): void
  }
  

这里为什么一会传入泛型 一会不传入? 我知道有默认的可以不传入 , 但一处传一处不传, 有什么特别含义 ?

还望大神解惑

2719 次点击
所在节点    JavaScript
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/539874

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX