CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-miniprogram-api-typings

Type definitions for APIs of WeChat Mini Program in TypeScript

Pending
Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Pending

The risk profile of this skill

Overview
Eval results
Files

app-page-lifecycle.mddocs/

App and Page Lifecycle

Complete type definitions for WeChat Mini Program app and page lifecycles, including launch options, scene values, and lifecycle methods.

Capabilities

App Constructor

Defines a WeChat Mini Program app with lifecycle methods and global data.

/**
 * Create a WeChat Mini Program app
 * @param options - App configuration with lifecycle methods and global data
 */
function App<TData extends WechatMiniprogram.App.DataOption>(
  options: WechatMiniprogram.App.Option<TData>
): void;

Usage Examples:

App({
  globalData: {
    userInfo: null,
    version: '1.0.0'
  },
  onLaunch(options) {
    console.log('App launched with scene:', options.scene);
    // Initialize app
  },
  onShow(options) {
    console.log('App showed');
    // App enters foreground
  },
  onHide() {
    console.log('App hidden');
    // App enters background
  },
  onError(error) {
    console.error('App error:', error);
    // Handle app errors
  }
});

App Instance Access

Get the current app instance to access global data and methods.

/**
 * Get current app instance
 * @param options - Options for app access
 * @returns App instance with global data and methods
 */
function getApp<T extends WechatMiniprogram.App.Instance>(
  options?: WechatMiniprogram.App.GetAppOption
): T;

interface WechatMiniprogram.App.GetAppOption {
  /** Allow access to app instance during app launch */
  allowDefault?: boolean;
}

Usage Examples:

// Access app from page or component
const app = getApp();
console.log('App version:', app.globalData.version);
app.globalData.userInfo = { name: 'John' };

// Safe access during launch
const app = getApp({ allowDefault: true });

Page Constructor

Defines a WeChat Mini Program page with data, lifecycle methods, and event handlers.

/**
 * Create a WeChat Mini Program page
 * @param options - Page configuration with data, lifecycle, and methods
 */
function Page<TData extends WechatMiniprogram.Page.DataOption>(
  options: WechatMiniprogram.Page.Option<TData>
): void;

Usage Examples:

Page({
  data: {
    items: [] as string[],
    loading: false,
    count: 0
  },
  onLoad(query) {
    console.log('Page loaded with query:', query);
    this.loadData();
  },
  onShow() {
    console.log('Page showed');
  },
  onReady() {
    console.log('Page ready - initial render complete');
  },
  onHide() {
    console.log('Page hidden');
  },
  onUnload() {
    console.log('Page unloaded');
  },
  onPullDownRefresh() {
    this.loadData();
    wx.stopPullDownRefresh();
  },
  loadData() {
    this.setData({ loading: true });
    // Load data logic
    this.setData({ loading: false });
  }
});

Page Stack Access

Get the current page stack to access active pages.

/**
 * Get current pages stack
 * @returns Array of current page instances
 */
function getCurrentPages<T extends WechatMiniprogram.Page.Instance[]>(): T;

Usage Examples:

// Get current page stack
const pages = getCurrentPages();
const currentPage = pages[pages.length - 1];
console.log('Current page route:', currentPage.route);

// Access previous page
if (pages.length > 1) {
  const prevPage = pages[pages.length - 2];
  prevPage.setData({ returnValue: 'data from current page' });
}

App Lifecycle Methods

interface WechatMiniprogram.App.Option<TData> {
  /** App launch - called once when app starts */
  onLaunch?(options: WechatMiniprogram.App.LaunchShowOption): void;
  
  /** App show - called when app enters foreground */
  onShow?(options: WechatMiniprogram.App.LaunchShowOption): void;
  
  /** App hide - called when app enters background */
  onHide?(): void;
  
  /** App error - called when app encounters error */
  onError?(error: string): void;
  
  /** Page not found - called when navigating to non-existent page */
  onPageNotFound?(options: WechatMiniprogram.App.PageNotFoundOption): void;
  
  /** Unhandled rejection - called for unhandled promise rejections */
  onUnhandledRejection?(options: WechatMiniprogram.App.UnhandledRejectionOption): void;
  
  /** Theme change - called when system theme changes */
  onThemeChange?(options: WechatMiniprogram.App.ThemeChangeOption): void;
}

interface WechatMiniprogram.App.LaunchShowOption {
  /** Scene value indicating how the app was launched */
  scene: number;
  /** Launch query parameters */
  query: Record<string, string>;
  /** Share ticket for group sharing */
  shareTicket?: string;
  /** Referrer info */
  referrerInfo?: {
    appId: string;
    extraData?: Record<string, any>;
  };
}

interface WechatMiniprogram.App.PageNotFoundOption {
  /** Path of the page that was not found */
  path: string;
  /** Query parameters */
  query: Record<string, string>;
  /** Whether this is a tab bar page */
  isEntryPage: boolean;
}

interface WechatMiniprogram.App.UnhandledRejectionOption {
  /** Promise rejection reason */
  reason: string;
  /** Promise that was rejected */
  promise: Promise<any>;
}

interface WechatMiniprogram.App.ThemeChangeOption {
  /** Current theme: light or dark */
  theme: 'light' | 'dark';
}

Page Lifecycle Methods

interface WechatMiniprogram.Page.Option<TData> {
  /** Page data */
  data?: TData;
  
  /** Page load - called when page loads */
  onLoad?(query: Record<string, string | undefined>): void;
  
  /** Page show - called when page becomes visible */
  onShow?(): void;
  
  /** Page ready - called after initial render completes */
  onReady?(): void;
  
  /** Page hide - called when page becomes hidden */
  onHide?(): void;
  
  /** Page unload - called when page is destroyed */
  onUnload?(): void;
  
  /** Route done - called when route animation completes */
  onRouteDone?(): void;
  
  /** Pull down refresh - called when user pulls down to refresh */
  onPullDownRefresh?(): void;
  
  /** Reach bottom - called when page scrolls to bottom */
  onReachBottom?(): void;
  
  /** Page scroll - called when page scrolls */
  onPageScroll?(options: WechatMiniprogram.Page.PageScrollOption): void;
  
  /** Tab item tap - called when tab bar item is tapped */
  onTabItemTap?(options: WechatMiniprogram.Page.TabItemTapOption): void;
  
  /** Window resize - called when window size changes */
  onResize?(options: WechatMiniprogram.Page.ResizeOption): void;
  
  /** Share app message - called when sharing to chat */
  onShareAppMessage?(
    options: WechatMiniprogram.Page.ShareAppMessageOption
  ): WechatMiniprogram.Page.CustomShareContent;
  
  /** Share timeline - called when sharing to WeChat Moments */
  onShareTimeline?(): WechatMiniprogram.Page.ShareTimelineContent;
  
  /** Add to favorites - called when adding to favorites */
  onAddToFavorites?(
    options: WechatMiniprogram.Page.AddToFavoritesOption
  ): WechatMiniprogram.Page.AddToFavoritesContent;
  
  /** Save exit state - called when page needs to save state */
  onSaveExitState?(): WechatMiniprogram.Page.ExitState;
}

interface WechatMiniprogram.Page.PageScrollOption {
  /** Vertical scroll position in px */
  scrollTop: number;
}

interface WechatMiniprogram.Page.ShareAppMessageOption {
  /** Share trigger: button, menu */
  from: 'button' | 'menu';
  /** Target element for button shares */
  target?: any;
  /** Web page URL for sharing */
  webViewUrl?: string;
}

Page Instance Methods

interface WechatMiniprogram.Page.Instance<TData> {
  /** Current page route */
  readonly route: string;
  
  /** Page load options */
  readonly options: Record<string, string>;
  
  /** Update page data and trigger re-render */
  setData(
    data: Partial<TData>,
    callback?: () => void
  ): void;
}

Scene Values

// Common scene values for app launch
enum WechatMiniprogram.App.SceneValues {
  /** Launch from chat session discovery */
  GROUP_CHAT_DISCOVERY = 1001,
  
  /** Launch from group chat */
  GROUP_CHAT = 1005,
  
  /** Launch from one-on-one chat */
  SINGLE_CHAT = 1006,
  
  /** Launch from WeChat scan */
  SCAN_QR_CODE = 1011,
  
  /** Launch from long press to identify QR code */
  LONG_PRESS_QR_CODE = 1012,
  
  /** Launch from app search */
  SEARCH = 1017,
  
  /** Launch from WeChat Moments */
  MOMENTS = 1020,
  
  /** Launch from nearby mini programs */
  NEARBY = 1023,
  
  /** Launch from profile page */
  PROFILE = 1024,
  
  /** Launch from system search */
  SYSTEM_SEARCH = 1025,
  
  /** Launch from tab bar */
  TAB_BAR = 1089,
  
  /** Launch from menu */
  MENU = 1090
}

Types

namespace WechatMiniprogram.App {
  interface Instance<TData = any> {
    /** Global data shared across the app */
    globalData: TData;
  }
  
  interface DataOption {
    [key: string]: any;
  }
  
  interface Option<TData> extends Instance<TData> {
    [key: string]: any;
  }
}

namespace WechatMiniprogram.Page {
  interface Instance<TData = any> {
    readonly route: string;
    readonly options: Record<string, string>;
    setData(data: Partial<TData>, callback?: () => void): void;
  }
  
  interface DataOption {
    [key: string]: any;
  }
  
  interface Option<TData> {
    data?: TData;
    [key: string]: any;
  }
}

docs

ai-ml-apis.md

app-page-lifecycle.md

bluetooth-nfc-apis.md

canvas-graphics.md

cloud-services.md

component-system.md

core-apis.md

device-hardware-apis.md

event-system.md

index.md

payment-apis.md

tile.json