V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
meszyouh
V2EX  ›  JavaScript

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

  •  
  •   meszyouh · 2019-03-01 09:23:22 +08:00 · 2771 次点击
    这是一个创建于 2094 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在 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
      }
      
    

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

    还望大神解惑

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2830 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 14:32 · PVG 22:32 · LAX 06:32 · JFK 09:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.