微信JSSDK使用ts時的類


因為項目使用TS開發原因接入weixin-js-sdk沒有對應的 .d.ts

安裝對應的包

yarn add weixin-js-sdk --save

現新增一對應的.d.ts
在項目目錄下新增 src/model/weixin-js-sdk.d.ts
對應代碼如下:

declare namespace WeixinJsSdk {

  /** **************************************************************************
   * Type definations
   ****************************************************************************/
  type JSApis = 'onMenuShareTimeline'
    | 'onMenuShareAppMessage'
    | 'onMenuShareQQ'
    | 'onMenuShareWeibo'
    | 'onMenuShareQZone'
    | 'startRecord'
    | 'stopRecord'
    | 'onVoiceRecordEnd'
    | 'playVoice'
    | 'pauseVoice'
    | 'stopVoice'
    | 'onVoicePlayEnd'
    | 'uploadVoice'
    | 'downloadVoice'
    | 'chooseImage'
    | 'previewImage'
    | 'uploadImage'
    | 'downloadImage'
    | 'translateVoice'
    | 'getNetworkType'
    | 'openLocation'
    | 'getLocation'
    | 'hideOptionMenu'
    | 'showOptionMenu'
    | 'hideMenuItems'
    | 'showMenuItems'
    | 'hideAllNonBaseMenuItem'
    | 'showAllNonBaseMenuItem'
    | 'closeWindow'
    | 'scanQRCode'
    | 'chooseWXPay'
    | 'openProductSpecificView'
    | 'addCard'
    | 'chooseCard'
    | 'openCard'
    | 'checkJsApi'
    | 'onRecordEnd'
    | 'openWXDeviceLib'
    | 'closeWXDeviceLib'
    | 'configWXDeviceWiFi'
    | 'getWXDeviceInfos'
    | 'sendDataToWXDevice'
    | 'startScanWXDevice'
    | 'stopScanWXDevice'
    | 'connectWXDevice'
    | 'disconnectWXDevice'
    | 'getWXDeviceTicket'
    | 'WeixinJSBridgeReady'
    | 'onWXDeviceBindStateChange'
    | 'onWXDeviceStateChange'
    | 'onScanWXDeviceResult'
    | 'onReceiveDataFromWXDevice'
    | 'onWXDeviceBluetoothStateChange';

  type Menus = 'menuItem:exposeArticle' // 舉報
    | 'menuItem:setFont' // 調整字體
    | 'menuItem:dayMode' // 日間模式
    | 'menuItem:nightMode' // 夜間模式
    | 'menuItem:refresh' // 刷新
    | 'menuItem:profile' // 查看公眾號(已添加)
    | 'menuItem:addContact' // 查看公眾號(未添加)
    | 'menuItem:share:appMessage' // 發送給朋友
    | 'menuItem:share:timeline' // 分享到朋友圈
    | 'menuItem:share:qq' // 分享到 QQ
    | 'menuItem:share:weiboApp' // 分享到 Weibo
    | 'menuItem:favorite' // 收藏
    | 'menuItem:share:facebook' // 分享到 Facebook
    | 'menuItem:share:QZone' // 分享到 QQ 空間
    | 'menuItem:editTag' // 編輯標簽
    | 'menuItem:delete' // 刪除
    | 'menuItem:copyUrl' // 復制鏈接
    | 'menuItem:originPage' // 原網頁
    | 'menuItem:readMode' // 閱讀模式
    | 'menuItem:openWithQQBrowser' // 在QQ瀏覽器中打開
    | 'menuItem:openWithSafari' // 在Safari中打開
    | 'menuItem:share:email' // 郵件
    | 'menuItem:share:brand'; // 一些特殊公眾號

  type scanTypes = 'qrCode' // 二維碼
    | 'barCode'; // 一維碼

  type ImageSize = 'original' | 'compressed';
  type SourceType = 'album' | 'camera';

  /** **************************************************************************
   * Interface definations
   ****************************************************************************/

  interface ConfigOptions {
    /**
     * 開啟調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數,
     * 可以在pc端打開,參數信息會通過log打出,僅在pc端時才會打印。
     */
    debug?: boolean;

    /**
     * 公眾號的唯一標識
     */
    appId: string;

    /**
     * 生成簽名的時間戳
     */
    timestamp: string|number;

    /**
     * 生成簽名的隨機串
     */
    nonceStr: string;

    /**
     * 簽名
     */
    signature: string;

    /**
     * 需要使用的JS接口列表
     */
    jsApiList: JSApis[];
    /* beta */
    beta: boolean;
    [x: string]: any;
  }

  /**
   * 所有接口通過wx對象(也可使用jWeixin對象)來調用,參數是一個對象,
   * 除了每個接口本身需要傳的參數之外,還有以下通用參數
   */
  interface Callbacks {
    /**
     * 接口調用成功時執行的回調函數。
     */
    success?: (res: any) => void;

    /**
     * 接口調用失敗時執行的回調函數。
     */
    fail?: (res: any) => void;

    /**
     * 接口調用完成時執行的回調函數,無論成功或失敗都會執行。
     */
    complete?: (res: any) => void;

    /**
     * 用戶點擊取消時的回調函數,僅部分有用戶取消操作的api才會用到。
     */
    cancel?: (res: any) => void;
  }

  interface MenuCallbacks extends Callbacks {
    /**
     * 監聽Menu中的按鈕點擊時觸發的方法,該方法僅支持Menu中的相關接口。
     */
    trigger?: (res: any) => void;
  }

  interface CheckJsApiOptions extends Callbacks {
    /**
     * 需要檢測的JS接口列表
     */
    jsApiList: JSApis[];
  }

  interface OnMenuShareTimelineOptions extends MenuCallbacks {
    /**
     * 分享標題
     */
    title: string;

    /**
     * 分享鏈接,該鏈接域名或路徑必須與當前頁面對應的公眾號JS安全域名一致
     */
    link: string;

    /**
     * 分享圖標
     */
    imgUrl?: string;
  }

  interface OnMenuShareAppMessageOptions extends OnMenuShareTimelineOptions {
    /**
     * 分享描述
     */
    desc?: string;

    /**
     * 分享類型,music、video或link,不填默認為link
     */
    type?: 'music' | 'video' | 'link';

    /**
     * 如果type是music或video,則要提供數據鏈接,默認為空
     */
    dataUrl?: string;
  }

  interface OnMenuShareQQ extends OnMenuShareTimelineOptions {
    /**
     * 分享描述
     */
    desc?: string;
  }

  interface OnMenuShareWeibo extends OnMenuShareTimelineOptions {
    /**
     * 分享描述
     */
    desc?: string;
  }

  interface OnMenuShareQZone extends OnMenuShareTimelineOptions {
    /**
     * 分享描述
     */
    desc?: string;
  }

  interface ChooseImageOptions extends Callbacks {
    /**
     * 一次可選擇圖片數量
     *
     * 默認為 9
     */
    count?: number;

    /**
     * 可以指定是原圖還是壓縮圖,默認二者都有
     */
    sizeType?: ImageSize[];

    /**
     * 可以指定來源是相冊還是相機,默認二者都有
     */
    sourceType?: SourceType[];
  }

  interface PreviewImageOptions extends Callbacks {
    /**
     * 當前顯示圖片的 http 鏈接
     */
    current: string;

    /**
     * 需要預覽的圖片 http 鏈接列表
     */
    urls: string[];
  }

  interface UploadImageOptions extends Callbacks {
    /**
     * 需要上傳的圖片的本地ID,由chooseImage接口獲得
     */
    localId: string;

    /**
     * 顯示進度提示
     */
    isShowProgressTips?: boolean;
  }

  interface DownloadImageOptions extends Callbacks {
    /**
     * 需要下載的圖片的服務器端ID,由uploadImage接口獲得
     */
    serverId: string;

    /**
     * 顯示進度提示
     */
    isShowProgressTips?: boolean;
  }

  interface GetLocalImgDataOptions extends Callbacks {
    /**
     * 圖片的localID
     */
    localId: string;
  }

  interface LocalVoiceOptions extends Callbacks {
    /**
     * 本地ID,由 stopRecord 接口獲得
     */
    localId: string;
  }

  interface UploadVoiceOptions extends LocalVoiceOptions {
    /**
     * 顯示進度提示
     */
    isShowProgressTips?: boolean;
  }

  interface DownloadVoiceOptions extends Callbacks {
    /**
     * 需要下載的音頻的服務器端ID,由uploadVoice接口獲得
     */
    serverId: string;

    /**
     * 顯示進度提示
     */
    isShowProgressTips?: boolean;
  }

  interface OpenLocationOptions extends Callbacks {
    /**
     * 緯度,浮點數,范圍為90 ~ -90
     */
    latitude: number;

    /**
     * 經度,浮點數,范圍為180 ~ -180。
     */
    longitude: number;

    /**
     * 位置名
     */
    name: string;

    /**
     * 地址詳情說明
     */
    address: string;

    /**
     * 地圖縮放級別,整形值,范圍從1~28。默認為最大
     */
    scale?: number;

    /**
     * 在查看位置界面底部顯示的超鏈接,可點擊跳轉
     */
    infoUrl?: string;
  }

  interface GetLocationOptions extends Callbacks {
    /**
     * 默認為wgs84的gps坐標,如果要返回直接給openLocation用的火星坐標,可傳入'gcj02'
     */
    type: 'wgs84' | 'gcj02'
  }

  interface StartSearchBeacons {
    /**
     * 搖周邊的業務ticket, 系統自動添加在搖出來的頁面鏈接后面
     */
    ticket: string;
  }

  interface MenuOptions {
    menuList: Menus[];
  }

  interface ScanQRCodeOptions extends Callbacks {
    /**
     * 默認為0,掃描結果由微信處理,1則直接返回掃描結果
     */
    needResult?: 0 | 1;

    /**
     * 可以指定掃二維碼還是一維碼,默認二者都有
     */
    scanType?: scanTypes[];
  }

  interface OpenProductSpecificViewOptions {
    /**
     * 商品id
     */
    productId: string;

    /**
     *  0.默認值,普通商品詳情頁
     *  1.掃一掃商品詳情頁
     *  2.小店商品詳情頁
     */
    viewType: 0 | 1 | 2;
  }

  interface ChooseCardOptions extends Callbacks {
    /**
     * 門店Id
     */
    shopId?: string;

    /**
     * 卡券類型
     */
    cardType?: string;

    /**
     * 卡券Id
     */
    cardId?: string;

    /**
     * 卡券簽名時間戳
     */
    timestamp: number;

    /**
     * 卡券簽名隨機串
     */
    nonceStr: string;

    /**
     * 簽名方式,默認'SHA1'
     */
    signType: 'SHA1';

    /**
     * 卡券簽名
     */
    cardSign: string;
  }

  interface AddCard {
    cardId: string;
    cardExt: string;
  }

  interface AddCardOptions extends Callbacks {
    cardList: AddCard[];
  }

  interface OpenCard {
    cardId: string;
    code: string;
  }

  interface OpenCardOptions extends Callbacks {
    cardList: OpenCard[];
  }

  interface ChooseWXPayOptions extends Callbacks {
    /**
     * 支付簽名時間戳,注意微信jssdk中的所有使用timestamp字段均為小寫。
     * 但最新版的支付后台生成簽名使用的timeStamp字段名需大寫其中的S字符
     */
    timestamp: string;

    /**
     * 支付簽名隨機串,不長於 32 位
     */
    nonceStr: string;

    /**
     * 統一支付接口返回的prepay_id參數值,提交格式如:prepay_id=***)
     */
    package: string;

    /**
     * 簽名方式,默認為'SHA1',使用新版支付需傳入'MD5'
     */
    signType: 'SHA1' | 'MD5';

    /**
     * 支付簽名
     */
    paySign: string;
  }

  /** **************************************************************************
   * 配置方法
   ****************************************************************************/

  /**
   * 注入權限驗證配置
   * 所有需要使用 JS-SDK 的頁面必須先注入配置信息,否則將無法調用。
   * (同一個 url 僅需調用一次,對於變化 url 的 SPA 的 web app 可在每次url變化時進行調用,
   * 目前 Android 微信客戶端不支持 pushState 的 H5 新特性,
   * 所以使用 pushState 來實現 web app 的頁面會導致簽名失敗,
   * 此問題會在 Android6.2中修復。)
   */
  function config(options: ConfigOptions): void;

  /**
   * 處理成功驗證
   *
   * config信息驗證后會執行ready方法,所有接口調用都必須在config接口獲得結果之后,
   * config是一個客戶端的異步操作,所以如果需要在頁面加載時就調用相關接口,
   * 則須把相關接口放在ready函數中調用來確保正確執行。對於用戶觸發時才調用的接口,
   * 則可以直接調用,不需要放在ready函數中。
   */
  function ready(callback: () => void): void;

  /**
   * 處理失敗驗證
   *
   * config信息驗證失敗會執行error函數,如簽名過期導致驗證失敗,
   * 具體錯誤信息可以打開config的debug模式查看,也可以在返回的res參數中查看,
   * 對於SPA可以在這里更新簽名。
   */
  function error(callback: (res: any) => void): void;

  /**
   * 判斷當前客戶端版本是否支持指定JS接口
   *
   * 備注:checkJsApi接口是客戶端6.0.2新引入的一個預留接口,
   * 第一期開放的接口均可不使用checkJsApi來檢測。
   */
  function checkJsApi(options: CheckJsApiOptions): void;

  /** **************************************************************************
   * 分享接口
   ****************************************************************************/

  /**
   * 獲取“分享到朋友圈”按鈕點擊狀態及自定義分享內容接口
   */
  function onMenuShareTimeline(options: OnMenuShareTimelineOptions): void;

  /**
   * 獲取“分享給朋友”按鈕點擊狀態及自定義分享內容接口
   */
  function onMenuShareAppMessage(options: OnMenuShareAppMessageOptions): void;

  /**
   * 獲取“分享到QQ”按鈕點擊狀態及自定義分享內容接口
   */
  function onMenuShareQQ(options: OnMenuShareQQ): void;

  /**
   * 獲取“分享到騰訊微博”按鈕點擊狀態及自定義分享內容接口
   */
  function onMenuShareWeibo(options: OnMenuShareWeibo): void;

  /**
   * 獲取“分享到QQ空間”按鈕點擊狀態及自定義分享內容接口
   */
  function onMenuShareQZone(options: OnMenuShareQZone): void;

  /** **************************************************************************
   * 圖像接口
   ****************************************************************************/

  /**
   * 拍照或從手機相冊中選圖接口
   */
  function chooseImage(options: ChooseImageOptions): void;

  /**
   * 預覽圖片接口
   */
  function previewImage(options: PreviewImageOptions): void;

  /**
   * 上傳圖片接口
   *
   * 備注:上傳圖片有效期3天,可用微信多媒體接口下載圖片到自己的服務器,此處獲得的 serverId 即 media_id。
   */
  function uploadImage(options: UploadImageOptions): void;

  /**
   * 下載圖片接口
   */
  function downloadImage(options: DownloadImageOptions): void;

  /**
   * 獲取本地圖片接口
   */
  function getLocalImgData(options: GetLocalImgDataOptions): void;

  /** **************************************************************************
   * 音頻接口
   ****************************************************************************/

  /**
   * 開始錄音接口
   */
  function startRecord(): void;

  /**
   * 停止錄音接口
   */
  function stopRecord(options: Callbacks): void;

  /**
   * 監聽錄音自動停止接口
   */
  function onVoiceRecordEnd(options: Callbacks): void;

  /**
   * 播放語音接口
   */
  function playVoice(options: LocalVoiceOptions): void;

  /**
   * 暫停播放接口
   */
  function pauseVoice(options: LocalVoiceOptions): void;

  /**
   * 停止播放接口
   */
  function stopVoice(options: LocalVoiceOptions): void;

  /**
   * 監聽語音播放完畢接口
   */
  function onVoicePlayEnd(options: Callbacks): void;

  /**
   * 上傳語音接口
   */
  function uploadVoice(options: UploadVoiceOptions): void;

  /**
   * 下載語音接口
   */
  function downloadVoice(options: DownloadVoiceOptions): void;

  /** **************************************************************************
   * 智能接口
   ****************************************************************************/

  /**
   * 識別音頻並返回識別結果接口
   */
  function translateVoice(options: UploadVoiceOptions): void;

  /** **************************************************************************
   * 設備信息
   ****************************************************************************/

  /**
   * 獲取網絡狀態接口
   */
  function getNetworkType(options: Callbacks): void;

  /** **************************************************************************
   * 地理信息
   ****************************************************************************/

  /**
   * 使用微信內置地圖查看位置接口
   */
  function openLocation(options: OpenLocationOptions): void;

  /**
   * 獲取地理位置接口
   */
  function getLocation(options: GetLocationOptions): void;

  /** **************************************************************************
   * 搖一搖周邊
   ****************************************************************************/

  /**
   * 開啟查找周邊ibeacon設備接口
   */
  function startSearchBeacons(options: StartSearchBeacons): void;

  /**
   * 關閉查找周邊ibeacon設備接口
   */
  function stopSearchBeacons(options: Callbacks): void;

  /**
   * 監聽周邊ibeacon設備接口
   *
   * 備注:上述搖一搖周邊接口使用注意事項及更多返回結果說明,請參考:搖一搖周邊獲取設備信息
   */
  function onSearchBeacons(options: Callbacks): void;

  /** **************************************************************************
   * 界面操作
   ****************************************************************************/

  /**
   * 關閉當前網頁窗口接口
   */
  function closeWindow(): void;

  /**
   * 批量隱藏功能按鈕接口
   */
  function hideMenuItems(options: MenuOptions): void;

  /**
   * 批量顯示功能按鈕接口
   */
  function showMenuItems(options: MenuOptions): void;

  /**
   * 隱藏所有非基礎按鈕接口
   */
  function hideAllNonBaseMenuItem(): void;

  /**
   * 顯示所有功能按鈕接口
   */
  function showAllNonBaseMenuItem(): void;

  /** **************************************************************************
   * 微信掃一掃
   ****************************************************************************/

  /**
   * 調起微信掃一掃接口
   */
  function scanQRCode(options: ScanQRCodeOptions): void;

  /** **************************************************************************
   * 微信小店
   ****************************************************************************/

  /**
   * 跳轉微信商品頁接口
   */
  function openProductSpecificView(options: OpenProductSpecificViewOptions): void;

  /** **************************************************************************
   * 微信卡券
   ****************************************************************************/

  /**
   * 拉取適用卡券列表並獲取用戶選擇信息
   */
  function chooseCard(options: ChooseCardOptions): void;

  /**
   * 批量添加卡券接口
   */
  function addCard(options: AddCardOptions): void;

  /**
   * 查看微信卡包中的卡券接口
   */
  function openCard(options: OpenCardOptions): void;

  /** **************************************************************************
   * 微信支付
   ****************************************************************************/

  /**
   * 發起一個微信支付請求
   */
  function chooseWXPay(options: ChooseWXPayOptions): void;

}

declare module 'weixin-js-sdk' {
  export = WeixinJsSdk;
}

至此結束


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM