DefinitelyTyped/types/weapp-api/index.d.ts
2017-08-20 15:37:53 -07:00

1136 lines
43 KiB
TypeScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Type definitions for weapp
// Project: https://mp.weixin.qq.com/debug/wxadoc/dev/index.html
// Definitions by: vargeek <https://github.com/vargeek>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
declare namespace wx {
type NoneParamCallback = () => void;
type OneParamCallback = (data: any) => void;
type ResponseCallback = (res: any) => void;
type DataResponseCallback = (res: DataResponse) => void;
type TempFileResponseCallback = (res: TempFileResponse) => void;
type ErrorCallback = (error: any) => void;
type EventCallback = (event: any) => void;
interface DataResponse {
/** 回调函数返回的内容 */
data: any;
}
interface TempFileResponse {
/** 文件的临时路径 */
tempFilePath: string;
}
interface PageOptions {
/** 页面的初始数据 */
data?: any;
/** 生命周期函数--监听页面加载 */
onLoad?: (options: any) => void;
/** 生命周期函数--监听页面渲染完成 */
onReady?: NoneParamCallback;
/** 生命周期函数--监听页面显示 */
onShow?: NoneParamCallback;
/** 生命周期函数--监听页面隐藏 */
onHide?: NoneParamCallback;
/** 生命周期函数--监听页面卸载 */
onUnload?: NoneParamCallback;
[key: string]: any;
}
interface AppOptions {
/**
* 生命周期函数--监听小程序初始化
* 当小程序初始化完成时,会触发 onLaunch全局只触发一次
*/
onLaunch?: NoneParamCallback;
/**
* 生命周期函数--监听小程序显示
* 当小程序启动,或从后台进入前台显示,会触发 onShow
*/
onShow?: NoneParamCallback;
/**
* 生命周期函数--监听小程序隐藏
* 当小程序从前台进入后台,会触发 onHide
*/
onHide?: NoneParamCallback;
[key: string]: any
}
interface RequestHeader {
[key: string]: string;
}
interface RequestOptions {
/** 开发者服务器接口地址 */
url: string;
/** 请求的参数 */
data?: string | any;
/** 设置请求的 header , header 中不能设置 Referer */
header?: RequestHeader;
/** 默认为 GET有效值OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT */
method?: string;
/** 收到开发者服务成功返回的回调函数res = {data: '开发者服务器返回的内容'} */
success?: DataResponseCallback;
/** 接口调用失败的回调函数 */
fail?: ResponseCallback;
/** 接口调用结束的回调函数(调用成功、失败都会执行) */
complete?: ResponseCallback;
}
/**
* wx.request发起的是https请求。一个微信小程序同时只能有5个网络请求连接。
*/
function request(options: RequestOptions): void;
interface UploadFileOptions {
/** 开发者服务器 url */
url: string;
/** 要上传文件资源的路径 */
filePath: string;
/** 文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容 */
name: string;
/** HTTP 请求 Header , header 中不能设置 Referer */
header?: RequestHeader;
/** HTTP 请求中其他额外的 form data */
formData?: any;
/** 接口调用成功的回调函数 */
success?: ResponseCallback;
/** 接口调用失败的回调函数 */
fail?: ResponseCallback;
/** 接口调用结束的回调函数(调用成功、失败都会执行) */
complete?: ResponseCallback;
}
/**
* 将本地资源上传到开发者服务器。
* 如页面通过 wx.chooseImage 等接口获取到一个本地资源的临时文件路径后,
* 可通过此接口将本地资源上传到指定服务器。
* 客户端发起一个 HTTPS POST 请求,
* 其中 Content-Type 为 multipart/form-data 。
*/
function uploadFile(options: UploadFileOptions): void;
interface DownloadFileOptions {
/** 下载资源的 url */
url: string;
/** 下载资源的类型用于客户端识别处理有效值image/audio/video */
type?: string;
/** HTTP 请求 Header */
header?: RequestHeader;
/** 下载成功后以 tempFilePath 的形式传给页面res = {tempFilePath: '文件的临时路径'} */
success?: TempFileResponseCallback;
/** 接口调用失败的回调函数 */
fail?: ResponseCallback;
/** 接口调用结束的回调函数(调用成功、失败都会执行) */
complete?: ResponseCallback;
}
/**
* 下载文件资源到本地。客户端直接发起一个 HTTP GET 请求,
* 把下载到的资源根据 type 进行处理,并返回文件的本地临时路径。
*/
function downloadFile(options: DownloadFileOptions): void;
interface ConnectSocketOptions {
/** 开发者服务器接口地址,必须是 HTTPS 协议,且域名必须是后台配置的合法域名 */
url: string;
/** 请求的数据 */
data?: any;
/** HTTP Header , header 中不能设置 Referer */
header?: RequestHeader;
/** 默认是GET有效值为 OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT */
method?: string;
/** 接口调用成功的回调函数 */
success?: ResponseCallback;
/** 接口调用失败的回调函数 */
fail?: ResponseCallback;
/** 接口调用结束的回调函数(调用成功、失败都会执行) */
complete?: ResponseCallback;
}
/**
* 创建一个 WebSocket 连接;
* 一个微信小程序同时只能有一个 WebSocket 连接,
* 如果当前已存在一个 WebSocket 连接,
* 会自动关闭该连接,并重新创建一个 WebSocket 连接。
*/
function connectSocket(options: ConnectSocketOptions): void;
/** 监听WebSocket连接打开事件。 */
function onSocketOpen(callback: OneParamCallback): void;
/** 监听WebSocket错误。 */
function onSocketError(callback: ErrorCallback): void;
interface SendSocketMessageOptions {
/** 需要发送的内容 */
data: string;
/** 接口调用成功的回调函数 */
success?: ResponseCallback;
/** 接口调用失败的回调函数 */
fail?: ResponseCallback;
/** 接口调用结束的回调函数(调用成功、失败都会执行) */
complete?: ResponseCallback;
}
/**
* 通过 WebSocket 连接发送数据,需要先 wx.connectSocket
* 并在 wx.onSocketOpen 回调之后才能发送。
*/
function sendSocketMessage(options: SendSocketMessageOptions): void;
/**
* 监听WebSocket接受到服务器的消息事件。
*/
function onSocketMessage(callback: DataResponseCallback): void;
/**
* 关闭WebSocket连接。
*/
function closeSocket(): void;
/** 监听WebSocket关闭。 */
function onSocketClose(callback: ResponseCallback): void;
type ImageSizeType = 'original' | 'compressed';
type ImageSourceType = 'album' | 'camera';
type VideoSourceType = 'album' | 'camera';
type CameraDevice = 'front' | 'back';
interface TempFilesData {
/** 文件的临时路径 */
tempFilePaths: string;
}
interface ChooseImageOptions {
/** 最多可以选择的图片张数默认9 */
count?: number;
/** original 原图compressed 压缩图,默认二者都有 */
sizeType?: Array<ImageSizeType>;
/** album 从相册选图camera 使用相机,默认二者都有 */
sourceType?: Array<ImageSourceType>;
/** 成功则返回图片的本地文件路径列表 tempFilePaths */
success: (res: TempFilesData) => void;
/** 接口调用失败的回调函数 */
fail?: ResponseCallback;
/** 接口调用结束的回调函数(调用成功、失败都会执行) */
complete?: ResponseCallback;
}
/**
* 从本地相册选择图片或使用相机拍照。
*/
function chooseImage(options: ChooseImageOptions): void;
interface PreviewImageOptions {
/** 当前显示图片的链接,不填则默认为 urls 的第一张 */
current?: string;
/** 需要预览的图片链接列表 */
urls: Array<string>;
/** 接口调用成功的回调函数 */
success?: ResponseCallback;
/** 接口调用失败的回调函数 */
fail?: ResponseCallback;
/** 接口调用结束的回调函数(调用成功、失败都会执行) */
complete?: ResponseCallback;
}
/**
* 预览图片。
*/
function previewImage(options: PreviewImageOptions): void;
interface StartRecordOptions {
/** 录音成功后调用返回录音文件的临时文件路径res = {tempFilePath: '录音文件的临时路径'} */
success?: TempFileResponseCallback;
/** 接口调用失败的回调函数 */
fail?: ResponseCallback;
/** 接口调用结束的回调函数(调用成功、失败都会执行) */
complete?: ResponseCallback;
}
/**
* 开始录音。当主动调用wx.stopRecord
* 或者录音超过1分钟时自动结束录音返回录音文件的临时文件路径。
* 注:文件的临时路径,在小程序本次启动期间可以正常使用,
* 如需持久保存需在主动调用wx.saveFile在小程序下次启动时才能访问得到。
*/
function startRecord(options: StartRecordOptions): void;
/**
* 主动调用停止录音。
*/
function stopRecord(): void;
interface PlayVoiceOptions {
/** 需要播放的语音文件的文件路径 */
filePath: string;
/** 接口调用成功的回调函数 */
success?: ResponseCallback;
/** 接口调用失败的回调函数 */
fail?: ResponseCallback;
/** 接口调用结束的回调函数(调用成功、失败都会执行) */
complete?: ResponseCallback;
}
/**
* 开始播放语音,同时只允许一个语音文件正在播放,
* 如果前一个语音文件还没播放完,将中断前一个语音播放。
*/
function playVoice(options: PlayVoiceOptions): void;
/**
* 暂停正在播放的语音。
* 再次调用wx.playVoice播放同一个文件时会从暂停处开始播放。
* 如果想从头开始播放,需要先调用 wx.stopVoice。
*/
function pauseVoice(): void;
/**
* 结束播放语音。
*/
function stopVoice(): void;
interface BackgroundAudioPlayerState {
/** 选定音频的长度单位s只有在当前有音乐播放时返回 */
duration?: number;
/** 选定音频的播放位置单位s只有在当前有音乐播放时返回 */
currentPosition?: number;
/** 播放状态2没有音乐在播放1播放中0暂停中 */
status: number;
/** 音频的下载进度整数80 代表 80%),只有在当前有音乐播放时返回 */
downloadPercent?: number;
/** 歌曲数据链接,只有在当前有音乐播放时返回 */
dataUrl?: string;
}
type GetBackgroundAudioPlayerStateSuccessCallback = (state: BackgroundAudioPlayerState) => void;
interface GetBackgroundAudioPlayerStateOptions {
/** 接口调用成功的回调函数 */
success?: GetBackgroundAudioPlayerStateSuccessCallback;
/** 接口调用失败的回调函数 */
fail?: NoneParamCallback;
/** 接口调用结束的回调函数(调用成功、失败都会执行) */
complete?: NoneParamCallback;
}
/** 获取音乐播放状态。 */
function getBackgroundAudioPlayerState(options: GetBackgroundAudioPlayerStateOptions): void;
interface PlayBackgroundAudioOptions {
/** 音乐链接 */
dataUrl: string;
/** 音乐标题 */
title?: string;
/** 封面URL */
coverImgUrl?: string;
/** 接口调用成功的回调函数 */
success?: ResponseCallback;
/** 接口调用失败的回调函数 */
fail?: ResponseCallback;
/** 接口调用结束的回调函数(调用成功、失败都会执行) */
complete?: ResponseCallback;
}
/** 播放音乐,同时只能有一首音乐正在播放。 */
function playBackgroundAudio(options: PlayBackgroundAudioOptions): void;
/** 暂停播放音乐。 */
function pauseBackgroundAudio(): void;
interface SeekBackgroundAudioOptions {
/** 音乐位置,单位:秒 */
position: number;
/** 接口调用成功的回调函数 */
success?: ResponseCallback;
/** 接口调用失败的回调函数 */
fail?: ResponseCallback;
/** 接口调用结束的回调函数(调用成功、失败都会执行) */
complete?: ResponseCallback;
}
/**
* 控制音乐播放进度。
*/
function seekBackgroundAudio(options: SeekBackgroundAudioOptions): void;
/**
* 停止播放音乐。
*/
function stopBackgroundAudio(): void;
/** 监听音乐播放。 */
function onBackgroundAudioPlay(callback: NoneParamCallback): void;
/** 监听音乐暂停。 */
function onBackgroundAudioPause(callback: NoneParamCallback): void;
/** 监听音乐停止。 */
function onBackgroundAudioStop(callback: NoneParamCallback): void;
interface SavedFileData {
/** 文件的保存路径 */
savedFilePath: string;
}
interface SaveFileOptions {
/** 需要保存的文件的临时路径 */
tempFilePath: string;
/** 返回文件的保存路径res = {savedFilePath: '文件的保存路径'} */
success?: (res: SavedFileData) => void;
/** 接口调用失败的回调函数 */
fail?: ResponseCallback;
/** 接口调用结束的回调函数(调用成功、失败都会执行) */
complete?: ResponseCallback;
}
/**
* 保存文件到本地。
*/
function saveFile(options: SaveFileOptions): void;
interface VideoData {
/** 选定视频的临时文件路径 */
tempFilePath: string;
/** 选定视频的时间长度 */
duration: number;
/** 选定视频的数据量大小 */
size: number;
/** 返回选定视频的长 */
height: number;
/** 返回选定视频的宽 */
width: number;
}
interface ChooseVideoOptions {
/** album 从相册选视频camera 使用相机拍摄,默认为:['album', 'camera'] */
sourceType?: Array<VideoSourceType>;
/** 拍摄视频最长拍摄时间单位秒。最长支持60秒 */
maxDuration?: number;
/** 前置或者后置摄像头,默认为前后都有,即:['front', 'back'] */
camera?: Array<CameraDevice>;
/** 接口调用成功,返回视频文件的临时文件路径,详见返回参数说明 */
success?: (res: VideoData) => void;
/** 接口调用失败的回调函数 */
fail?: ResponseCallback;
/** 接口调用结束的回调函数(调用成功、失败都会执行) */
complete?: ResponseCallback;
}
/**
* 拍摄视频或从手机相册中选视频,返回视频的临时文件路径。
*/
function chooseVideo(options: ChooseVideoOptions): void;
interface SetStorageOptions {
/** 本地缓存中的指定的 key */
key: string;
/** 需要存储的内容 */
data: any | string;
/** 接口调用成功的回调函数 */
success?: ResponseCallback;
/** 接口调用失败的回调函数 */
fail?: ResponseCallback;
/** 接口调用结束的回调函数(调用成功、失败都会执行) */
complete?: ResponseCallback;
}
/**
* 将数据存储在本地缓存中指定的 key 中,
* 会覆盖掉原来该 key 对应的内容,这是一个异步接口。
*/
function setStorage(options: SetStorageOptions): void;
/**
* 将 data 存储在本地缓存中指定的 key 中,
* 会覆盖掉原来该 key 对应的内容,这是一个同步接口。
*
* @param {string} key 本地缓存中的指定的 key
* @param {(Object | string)} data 需要存储的内容
*/
function setStorageSync(key: string, data: any | string): void;
interface GetStorageOptions {
/** 本地缓存中的指定的 key */
key: string;
/** 接口调用的回调函数,res = {data: key对应的内容} */
success: DataResponseCallback;
/** 接口调用失败的回调函数 */
fail?: ResponseCallback;
/** 接口调用结束的回调函数(调用成功、失败都会执行) */
complete?: ResponseCallback;
}
/**
* 从本地缓存中异步获取指定 key 对应的内容。
*/
function getStorage(options: GetStorageOptions): void;
/**
* 从本地缓存中同步获取指定 key 对应的内容。
*
* @param {string} key
* @returns {(Object | string)}
*/
function getStorageSync(key: string): any | string;
/**
* 清理本地数据缓存。
*/
function clearStorage(): void;
/**
* 同步清理本地数据缓存
*/
function clearStorageSync(): void;
interface LocationData {
/** 纬度,浮点数,范围为-90~90负数表示南纬 */
latitude: number;
/** 经度,浮点数,范围为-180~180负数表示西经 */
longitude: number;
/** 速度浮点数单位m/s */
speed: number;
/** 位置的精确度 */
accuracy: number;
}
interface GetLocationOptions {
/** 默认为 wgs84 返回 gps 坐标gcj02 返回可用于wx.openLocation的坐标 */
type?: 'wgs84' | 'gcj02';
/** 接口调用成功的回调函数,返回内容详见返回参数说明。 */
success: (res: LocationData) => void;
/** 接口调用失败的回调函数 */
fail?: ResponseCallback;
/** 接口调用结束的回调函数(调用成功、失败都会执行) */
complete?: ResponseCallback;
}
/**
* 获取当前的地理位置、速度。
*/
function getLocation(options: GetLocationOptions): void;
interface OpenLocationOptions {
/** 纬度,范围为-90~90负数表示南纬 */
latitude: number;
/** 经度,范围为-180~180负数表示西经 */
longitude: number;
/** 缩放比例范围1~28默认为28 */
scale?: number;
/** 位置名 */
name?: string;
/** 地址的详细说明 */
address?: string;
/** 接口调用成功的回调函数 */
success?: ResponseCallback;
/** 接口调用失败的回调函数 */
fail?: ResponseCallback;
/** 接口调用结束的回调函数(调用成功、失败都会执行) */
complete?: ResponseCallback;
}
/**
* 使用微信内置地图查看位置
*/
function openLocation(options: OpenLocationOptions): void;
interface NetworkTypeData {
/** 返回网络类型2g3g4gwifi */
networkType: '2g' | '3g' | '4g' | 'wifi';
}
interface GetNetworkTypeOptions {
/** 接口调用成功,返回网络类型 networkType */
success: (res: NetworkTypeData) => void;
/** 接口调用失败的回调函数 */
fail?: ResponseCallback;
/** 接口调用结束的回调函数(调用成功、失败都会执行) */
complete?: ResponseCallback;
}
/**
* 获取网络类型。
*/
function getNetworkType(options: GetNetworkTypeOptions): void;
interface SystemInfo {
/** 手机型号 */
model: string;
/** 设备像素比 */
pixelRatio: number;
/** 窗口宽度 */
windowWidth: number;
/** 窗口高度 */
windowHeight: number;
/** 微信设置的语言 */
language: string;
/** 微信版本号 */
version: string;
}
interface GetSystemInfoOptions {
/** 成功获取系统信息的回调 */
success: (res: SystemInfo) => void;
/** 接口调用失败的回调函数 */
fail?: ResponseCallback;
/** 接口调用结束的回调函数(调用成功、失败都会执行) */
complete?: ResponseCallback;
}
/**
* 获取系统信息。
*/
function getSystemInfo(options: GetSystemInfoOptions): void;
interface AccelerometerData {
/** X 轴 */
x: number;
/** Y 轴 */
y: number;
/** Z 轴 */
z: number;
}
type AccelerometerChangeCallback = (res: AccelerometerData) => void;
/**
* 监听重力感应数据频率5次/秒
*/
function onAccelerometerChange(callback: AccelerometerChangeCallback): void;
interface CompassData {
/** 面对的方向度数 */
direction: number;
}
type CompassChangeCallback = (res: CompassData) => void;
function onCompassChange(callback: CompassChangeCallback): void;
interface SetNavigationBarTitleOptions {
/** 页面标题 */
title?: string;
/** 成功获取系统信息的回调 */
success?: ResponseCallback;
/** 接口调用失败的回调函数 */
fail?: ResponseCallback;
/** 接口调用结束的回调函数(调用成功、失败都会执行) */
complete?: ResponseCallback;
}
/**
* 动态设置当前页面的标题。
*/
function setNavigationBarTitle(options: SetNavigationBarTitleOptions): void;
/**
* 在当前页面显示导航条加载动画。
*/
function showNavigationBarLoading(): void;
/**
* 隐藏导航条加载动画。
*/
function hideNavigationBarLoading(): void;
interface NavigateToOptions {
/** 需要跳转的应用内页面的路径 */
url: string;
/** 成功获取系统信息的回调 */
success?: ResponseCallback;
/** 接口调用失败的回调函数 */
fail?: ResponseCallback;
/** 接口调用结束的回调函数(调用成功、失败都会执行) */
complete?: ResponseCallback;
}
/**
* 保留当前页面跳转到应用内的某个页面使用wx.navigateBack可以返回到原页面。
*
* 注意:为了不让用户在使用小程序时造成困扰,
* 我们规定页面路径只能是五层,请尽量避免多层级的交互方式。
*/
function navigateTo(options: NavigateToOptions): void;
interface RedirectToOptions {
/** 需要跳转的应用内页面的路径 */
url: string;
/** 成功获取系统信息的回调 */
success?: ResponseCallback;
/** 接口调用失败的回调函数 */
fail?: ResponseCallback;
/** 接口调用结束的回调函数(调用成功、失败都会执行) */
complete?: ResponseCallback;
}
/**
* 关闭当前页面,跳转到应用内的某个页面。
*/
function redirectTo(options: RedirectToOptions): void;
/**
* 关闭当前页面,回退前一页面。
*/
function navigateBack(): void;
type TimingFunction = 'linear' | 'ease' | 'ease-in' | 'ease-in-out' | 'ease-out' | 'step-start' | 'step-end';
interface CreateAnimationOptions {
/** 动画持续时间单位ms默认值 400 */
duration?: number;
/** 定义动画的效果,默认值"linear",有效值:"linear","ease","ease-in","ease-in-out","ease-out","step-start","step-end" */
timingFunction?: TimingFunction;
/** 动画持续时间,单位 ms默认值 0 */
delay?: number;
/** 设置transform-origin默认为"50% 50% 0" */
transformOrigin?: string;
}
interface Animator {
actions: Array<AnimationAction>;
}
interface AnimationAction {
animates: Array<Animate>;
option: AnimationActionOption;
}
interface AnimationActionOption {
transformOrigin: string;
transition: AnimationTransition;
}
interface AnimationTransition {
delay: number;
duration: number;
timingFunction: TimingFunction;
}
interface Animate {
type: string;
args: Array<any>;
}
/**
* 创建一个动画实例animation。调用实例的方法来描述动画。
* 最后通过动画实例的export方法导出动画数据传递给组件的animation属性。
*
* 注意: export 方法每次调用后会清掉之前的动画操作
*/
function createAnimation(options?: CreateAnimationOptions): Animation;
/** 动画实例可以调用以下方法来描述动画,调用结束后会返回自身,支持链式调用的写法。 */
interface Animation {
/**
* 调用动画操作方法后要调用 step() 来表示一组动画完成,
* 可以在一组动画中调用任意多个动画方法,
* 一组动画中的所有动画会同时开始,
* 一组动画完成后才会进行下一组动画。
* @param {CreateAnimationOptions} options 指定当前组动画的配置
*/
step(options?: CreateAnimationOptions): void;
/**
* 导出动画操作
*
* 注意: export 方法每次调用后会清掉之前的动画操作
*/
export(): Animator;
/** 透明度,参数范围 0~1 */
opacity(value: number): Animation;
/** 颜色值 */
backgroundColor(color: string): Animation;
/** 长度值,如果传入 Number 则默认使用 px可传入其他自定义单位的长度值 */
width(length: number): Animation;
/** 长度值,如果传入 Number 则默认使用 px可传入其他自定义单位的长度值 */
height(length: number): Animation;
/** 长度值,如果传入 Number 则默认使用 px可传入其他自定义单位的长度值 */
top(length: number): Animation;
/** 长度值,如果传入 Number 则默认使用 px可传入其他自定义单位的长度值 */
left(length: number): Animation;
/** 长度值,如果传入 Number 则默认使用 px可传入其他自定义单位的长度值 */
bottom(length: number): Animation;
/** 长度值,如果传入 Number 则默认使用 px可传入其他自定义单位的长度值 */
right(length: number): Animation;
/** deg的范围-180~180从原点顺时针旋转一个deg角度 */
rotate(deg: number): Animation;
/** deg的范围-180~180在X轴旋转一个deg角度 */
rotateX(deg: number): Animation;
/** deg的范围-180~180在Y轴旋转一个deg角度 */
rotateY(deg: number): Animation;
/** deg的范围-180~180在Z轴旋转一个deg角度 */
rotateZ(deg: number): Animation;
/** 同transform-function rotate3d */
rotate3d(x: number, y: number, z: number, deg: number): Animation;
/**
* 一个参数时表示在X轴、Y轴同时缩放sx倍数
* 两个参数时表示在X轴缩放sx倍数在Y轴缩放sy倍数
*/
scale(sx: number, sy?: number): Animation;
/** 在X轴缩放sx倍数 */
scaleX(sx: number): Animation;
/** 在Y轴缩放sy倍数 */
scaleY(sy: number): Animation;
/** 在Z轴缩放sy倍数 */
scaleZ(sz: number): Animation;
/** 在X轴缩放sx倍数在Y轴缩放sy倍数在Z轴缩放sz倍数 */
scale3d(sx: number, sy: number, sz: number): Animation;
/**
* 一个参数时表示在X轴偏移tx单位px
* 两个参数时表示在X轴偏移tx在Y轴偏移ty单位px。
*/
translate(tx: number, ty?: number): Animation;
/**
* 在X轴偏移tx单位px
*/
translateX(tx: number): Animation;
/**
* 在Y轴偏移tx单位px
*/
translateY(ty: number): Animation;
/**
* 在Z轴偏移tx单位px
*/
translateZ(tz: number): Animation;
/**
* 在X轴偏移tx在Y轴偏移ty在Z轴偏移tz单位px
*/
translate3d(tx: number, ty: number, tz: number): Animation;
/**
* 参数范围-180~180
* 一个参数时Y轴坐标不变X轴坐标延顺时针倾斜ax度
* 两个参数时分别在X轴倾斜ax度在Y轴倾斜ay度
*/
skew(ax: number, ay?: number): Animation;
/** 参数范围-180~180Y轴坐标不变X轴坐标延顺时针倾斜ax度 */
skewX(ax: number): Animation;
/** 参数范围-180~180X轴坐标不变Y轴坐标延顺时针倾斜ay度 */
skewY(ay: number): Animation;
/**
* 同transform-function matrix
*/
matrix(a: number, b: number, c: number, d: number, tx: number, ty: number): Animation;
/** 同transform-function matrix3d */
matrix3d(a1: number, b1: number, c1: number, d1: number, a2: number, b2: number, c2: number, d2: number, a3: number, b3: number, c3: number, d3: number, a4: number, b4: number, c4: number, d4: number): Animation;
}
interface CanvasAction {
method: string;
data: Array<CanvasAction> | Array<number | string>
}
type LineCapType = 'butt' | 'round' | 'square';
type LineJoinType = 'bevel' | 'round' | 'miter';
/**
* context只是一个记录方法调用的容器用于生成记录绘制行为的actions数组。context跟<canvas/>不存在对应关系一个context生成画布的绘制动作数组可以应用于多个<canvas/>。
*/
interface CanvasContext {
/** 获取当前context上存储的绘图动作 */
getActions(): Array<CanvasAction>
/** 清空当前的存储绘图动作 */
clearActions(): void;
/**
* 对横纵坐标进行缩放
* 在调用scale方法后之后创建的路径其横纵坐标会被缩放。
* 多次调用scale倍数会相乘。
*
* @param {number} scaleWidth 横坐标缩放的倍数
* @param {number} scaleHeight 纵坐标轴缩放的倍数
*/
scale(scaleWidth: number, scaleHeight?: number): void;
/**
* 对坐标轴进行顺时针旋转
* 以原点为中心,原点可以用 translate方法修改。
* 顺时针旋转当前坐标轴。多次调用rotate旋转的角度会叠加。
*
* @param {number} rotate 旋转角度,以弧度计。
*/
rotate(rotate: number): void;
/**
* 对坐标原点进行缩放
* 对当前坐标系的原点(0, 0)进行变换,默认的坐标系原点为页面左上角。
*
* @param {number} x 水平坐标平移量
* @param {number} y 竖直坐标平移量
*/
translate(x: number, y: number): void;
/**
* 保存当前坐标轴的缩放、旋转、平移信息
*/
save(): void;
/**
* 恢复之前保存过的坐标轴的缩放、旋转、平移信息
*/
restore(): void;
/**
* 在给定的矩形区域内,清除画布上的像素
* 清除画布上在该矩形区域内的内容。
*
* @param {number} x 矩形区域左上角的x坐标
* @param {number} y 矩形区域左上角的y坐标
* @param {number} width 矩形区域的宽度
* @param {number} height 矩形区域的高度
*/
clearRect(x: number, y: number, width: number, height: number): void;
/**
* 在画布上绘制被填充的文本
*
* @param {string} text 在画布上输出的文本
* @param {number} x 绘制文本的左上角x坐标位置
* @param {number} y 绘制文本的左上角y坐标位置
*/
fillText(text: string, x: number, y: number): void;
/**
* 在画布上绘制图像
* 绘制图像,图像保持原始尺寸。
*
* @param {string} imageResource 所要绘制的图片资源。 通过chooseImage得到一个文件路径或者一个项目目录内的图片
* @param {number} x 图像左上角的x坐标
* @param {number} y 图像左上角的y坐标
*/
drawImage(imageResource: string, x: number, y: number): void;
/**
* 对当前路径进行填充
*/
fill(): void;
/**
* 对当前路径进行描边
*/
stroke(): void;
/**
* 开始一个路径
* 开始创建一个路径需要调用fill或者stroke才会使用路径进行填充或描边。
* 同一个路径内的多次setFillStyle、setStrokeStyle、setLineWidth等设置
* 以最后一次设置为准。
*/
beginPath(): void;
/**
* 关闭一个路径
*/
closePath(): void;
/**
* 把路径移动到画布中的指定点,但不创建线条。
*
* @param {number} x 目标位置的x坐标
* @param {number} y 目标位置的y坐标
*/
moveTo(x: number, y: number): void;
/**
* 在当前位置添加一个新点,然后在画布中创建从该点到最后指定点的路径。
*
* @param {number} x 目标位置的x坐标
* @param {number} y 目标位置的y坐标
*/
lineTo(x: number, y: number): void;
/**
* 添加一个矩形路径到当前路径。
*
* @param {number} x 矩形路径左上角的x坐标
* @param {number} y 矩形路径左上角的y坐标
* @param {number} width 矩形路径的宽度
* @param {number} height 矩形路径的高度
*/
rect(x: number, y: number, width: number, height: number): void;
/**
* 添加一个弧形路径到当前路径,顺时针绘制。
*
* @param {number} x 矩形路径左上角的x坐标
* @param {number} y 矩形路径左上角的y坐标
* @param {number} radius 矩形路径左上角的y坐标
* @param {number} startAngle 起始弧度
* @param {number} endAngle 结束弧度
* @param {boolean} sweepAngle 从起始弧度开始,扫过的弧度
*/
arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, sweepAngle: boolean): void;
/**
* 创建二次方贝塞尔曲线
*
* @param {number} cpx 贝塞尔控制点的x坐标
* @param {number} cpy 贝塞尔控制点的y坐标
* @param {number} x 结束点的x坐标
* @param {number} y 结束点的y坐标
*/
quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void;
/**
* 创建三次方贝塞尔曲线
*
* @param {number} cp1x 第一个贝塞尔控制点的 x 坐标
* @param {number} cp1y 第一个贝塞尔控制点的 y 坐标
* @param {number} cp2x 第二个贝塞尔控制点的 x 坐标
* @param {number} cp2y 第二个贝塞尔控制点的 y 坐标
* @param {number} x 结束点的x坐标
* @param {number} y 结束点的y坐标
*/
bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void;
/**
* 设置填充样式
*
* @param {string} color 设置为填充样式的颜色。'rgb(255, 0, 0)'或'rgba(255, 0, 0, 0.6)'或'#ff0000'格式的颜色字符串
*/
setFillStyle(color: string): void;
/**
* 设置线条样式
*
* @param {string} color 设置为填充样式的颜色。'rgb(255, 0, 0)'或'rgba(255, 0, 0, 0.6)'或'#ff0000'格式的颜色字符串
*/
setStrokeStyle(color: string): void;
/**
* 设置阴影
*
* @param {number} offsetX 阴影相对于形状在水平方向的偏移
* @param {number} offsetY 阴影相对于形状在竖直方向的偏移
* @param {number} blur 阴影的模糊级别,数值越大越模糊 0~100
* @param {string} color 阴影的颜色。 'rgb(255, 0, 0)'或'rgba(255, 0, 0, 0.6)'或'#ff0000'格式的颜色字符串
*/
setShadow(offsetX: number, offsetY: number, blur: number, color: string): void;
/**
* 设置字体大小
*
* @param {number} fontSize 字体的字号
*/
setFontSize(fontSize: number): void;
/**
* 设置线条端点的样式
*
* @param {LineCapType} lineCap 线条的结束端点样式。 'butt'、'round'、'square'
*/
setLineCap(lineCap: LineCapType): void;
/**
* 设置两线相交处的样式
* @param {LineJoinType} lineJoin 两条线相交时,所创建的拐角类型
*/
setLineJoin(lineJoin: LineJoinType): void;
/**
* 设置线条宽度
*
* @param {number} lineWidth 线条的宽度
*/
setLineWidth(lineWidth: number): void;
/** 设置最大斜接长度,斜接长度指的是在两条线交汇处内角和外角之间的距离。
* 当 setLineJoin为 miter 时才有效。
* 超过最大倾斜长度的,连接处将以 lineJoin 为 bevel 来显示
*
* @param {number} miterLimit 最大斜接长度
*/
setMiterLimit(miterLimit: number): void;
}
/**
* 创建并返回绘图上下文context对象。
* context只是一个记录方法调用的容器
* 用于生成记录绘制行为的actions数组。c
* ontext跟<canvas/>不存在对应关系,
* 一个context生成画布的绘制动作数组可以应用于多个<canvas/>。
*/
function createContext(): CanvasContext;
interface DrawCanvasOptions {
/** 画布标识,传入 <canvas/> 的 cavas-id */
canvasId: number | string;
/**
* 绘图动作数组,由 wx.createContext 创建的 context
* 调用 getActions 方法导出绘图动作数组。
*/
actions: Array<CanvasAction>;
}
/**
* 绘制画布
*/
function drawCanvas(options: DrawCanvasOptions): void;
/**
* 收起键盘。
*/
function hideKeyboard(): void;
interface LoginResponse {
/** 调用结果 */
errMsg: string;
/** 用户允许登录后,回调内容会带上 code有效期五分钟
* 开发者需要将 code 发送到开发者服务器后台,
* 使用code 换取 session_key api
* 将 code 换成 openid 和 session_key */
code: string;
}
interface LoginOptions {
/** 接口调用成功的回调函数 */
success?: (res: LoginResponse) => void;
/** 接口调用失败的回调函数 */
fail?: ResponseCallback;
/** 接口调用结束的回调函数(调用成功、失败都会执行) */
complete?: ResponseCallback;
}
/**
* 调用接口获取登录凭证code进而换取用户登录态信息
* 包括用户的唯一标识openid 及本次登录的 会话密钥session_key
* 用户数据的加解密通讯需要依赖会话密钥完成。
*/
function login(option: LoginOptions): void;
interface UserInfo {
nickName: string;
avatarUrl: string;
gender: number;
province: string;
city: string;
country: string;
}
interface UserInfoResponse {
/** 用户信息对象,不包含 openid 等敏感信息 */
userInfo: UserInfo;
/** 不包括敏感信息的原始数据字符串,用于计算签名。 */
rawData: string;
/** 使用 sha1( rawData + sessionkey ) 得到字符串,用于校验用户信息。 */
signature: string;
/** 包括敏感数据在内的完整用户信息的加密数据,详细见加密数据解密算法 */
encryptData: string;
}
interface GetUserInfoOptions {
/** 接口调用成功的回调函数 */
success?: (res: UserInfoResponse) => void;
/** 接口调用失败的回调函数 */
fail?: ResponseCallback;
/** 接口调用结束的回调函数(调用成功、失败都会执行) */
complete?: ResponseCallback;
}
/**
* 获取用户信息,需要先调用 wx.login 接口。
*/
function getUserInfo(options: GetUserInfoOptions): void;
type PaymentSignType = 'MD5';
interface RequestPaymentOptions {
/** 时间戳从1970年1月1日00:00:00至今的秒数,即当前的时间 */
timeStamp: string|number;
/** 随机字符串长度为32个字符以下。 */
nonceStr: string;
/** 统一下单接口返回的 prepay_id 参数值提交格式如prepay_id=* */
package: string;
/** 签名算法,暂支持 MD5 */
signType: PaymentSignType;
/** 签名,具体签名方案参见微信公众号支付帮助文档; */
paySign: string;
/** 接口调用成功的回调函数 */
success?: ResponseCallback;
/** 接口调用失败的回调函数 */
fail?: ResponseCallback;
/** 接口调用结束的回调函数(调用成功、失败都会执行) */
complete?: ResponseCallback;
}
/**
* 发起微信支付。
*/
function requestPayment(options: RequestPaymentOptions): void;
}
interface Page {
/**
* setData 函数用于将数据从逻辑层发送到视图层,
* 同时改变对应的 this.data 的值。
* 注意:
* 1. 直接修改 this.data 无效,无法改变页面的状态,还会造成数据不一致。
* 2. 单次设置的数据不能超过1024kB请尽量避免一次设置过多的数据。
*/
setData(data: any): void;
}
interface PageConstructor {
/**
* Page() 函数用来注册一个页面。
* 接受一个 object 参数,其指定页面的初始数据、生命周期函数、事件处理函数等。
*/
(options: wx.PageOptions): void;
}
declare var Page: PageConstructor;
interface App {
/**
* getCurrentPage() 函数用户获取当前页面的实例。
*/
getCurrentPage(): Page;
}
interface AppConstructor {
/**
* App() 函数用来注册一个小程序。
* 接受一个 object 参数,其指定小程序的生命周期函数等。
*/
(options: wx.AppOptions): void;
}
declare var App: AppConstructor;
/**
* 我们提供了全局的 getApp() 函数,可以获取到小程序实例。
*/
declare function getApp(): App;